Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Циклический линейный список (http://forum.oszone.net/showthread.php?t=195023)

inetcrack 26-12-2010 02:18 1574641

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

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

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

Код:

#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 28-12-2010 13:33 1576225

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

Drongo 29-12-2010 21:40 1577300

Цитата:

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

Покажите, если не затруднит, итоговый вариант ответа. :) Мне будет интересно. :yes:


Время: 12:10.

Время: 12:10.
© OSzone.net 2001-