C/C++ - [решено] Циклический линейный список

Ответить
Аватара пользователя
inetcrack

C/C++ - [решено] Циклический линейный список

Сообщение inetcrack »

Здравствуйте...

Вот у меня тут есть задание, чтобы вас не грузить не буду пока сразу всё писать...



Но вот одна из базовых частей создание - создать односвязный циклический список.



Я пытался пытался ещё с прошлой недели - к сожалению не получается, странные ошибки выдаёт...

Помогите пожалуйста разобраться.





Код:

Код: Выделить всё

#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
struct list
{
	int data;
	list* next;
};
//Function prototypes:
void Create_file(fstream&f, char* filename);
void Read_file(fstream&f, char* filename);
void Create_list(list* first, fstream&f, char* filename);
void Add_last(list* first, int a);
void Add_first(list* &first, int a);
void Read_list(list* first);
void main()
{
	fstream f; char filename[20];
	int i=0;
	list* first;
	first = NULL;
	cout << "Enter filename: ";
	cin >> filename;
	Create_file(f, filename);
	cout << endl;
	Read_file(f, filename);
	cout << endl;
	Create_list(first, f, filename);
	cout << endl;
	Read_list(first);
	cout << endl;
	cin.get();
}
void Create_file(fstream&f, char* filename)
{
	int x;
	f.open(filename, ios::out|ios::binary);
	cout << "Enter number(enter 9999 to break) ";
	cin >> x;
	while(x != 9999)
	{
		f.write((char*)&x, sizeof x);
		cin >> x;
	}
	f.close();
}
void Read_file(fstream&f, char* filename)
{
	int x;
	f.open(filename, ios::in|ios::binary);
	while(f.read((char*)&x, sizeof x))
	{
		cout << x << " ";
	}
	f.close();
}
void Create_list(list* first, fstream&f, char* filename)
{
	f.open(filename, ios::binary|ios::in);
	if(f.eof())
	{
		f.clear();
		f.seekg(0);
	}
	int a; list* p;
	while(f.read((char*)&a, sizeof a))
	{
		if(first==NULL)
		{
			Add_first(first, a);;
		}
		else
		{
			Add_last(first, a);
		}
	}
	f.close();
}
void Add_first(list* &first, int a)
{
	list* p;
	p = new list;
	p ->data = a;
	p ->next = NULL;
	first = p;
	first ->next = first;
}
void Add_last(list* first, int a)
{
     list* q;
     q = new list;
     q -> data = a;
     q -> next = first;     
     list* p;
     p = first;
     while (p -> next != first)
          p = p -> next;
     p -> next = q;
}
void Read_list(list* first)
{
	list* p;
	p = first;
	//Что-то тут будет...
}

Собственно при пошаговой откладке ошибка вылетала именно на функции Add_last...
Аватара пользователя
inetcrack

Re: C/C++ - [решено] Циклический линейный список

Сообщение inetcrack »

Ладно, пока ждал ответы уже помогли знакомые специалисты...

В общем можно закрывать тему.
Аватара пользователя
Drongo

Re: C/C++ - [решено] Циклический линейный список

Сообщение Drongo »

Цитата inetcrack:



пока ждал ответы уже помогли знакомые специалисты...
C/C++ - [решено] Циклический линейный список




Покажите, если не затруднит, итоговый вариант ответа. Изображение Мне будет интересно. Изображение
Ответить

Вернуться в «Программирование и базы данных»