Помогите с файловым вводом

Мне нужно вводить n и элементы двусвязного списка из файла. У кого есть время - помогите пожалуйста.

#include <iostream> 
#include <fstream>
using namespace std;

struct node
{
    int data;
    node* next;
    node* prev;

};
struct List
{
    node* top;
    node* bot;
};
void check(List& A) 
{
    A.top = NULL;
    A.bot = NULL;
}
bool empty(List& A)
{
    return A.top == NULL;
}

int length(List& A)
{
    node* p;
    int len;
    if (empty(A))  len = 0;
    else
    {
        len = 0;
        p = A.top;
        while (p)
        {
            p = p->next;
            len++;
        }
    }
    return len;

}
void createlist(List& A, int n)

{
    int i;
    node* p;
    A.top = NULL;
    A.bot = NULL;

    for (i = 0; i < n; i++)
    {
        p = new node;

        cout << " enter element";

        cin >> p->data;
        if (A.top == NULL)
        {
            A.top = p;
            p->next = NULL;
            p->prev = NULL;
            A.bot = p;
        }

        else

        {
            A.bot->next = p;
            p->prev = A.bot;
            p->next = NULL;
            A.bot = p;
        }

    }

}
void push(List& A, int data)

{

    node* p;

    if (length(A) == 0)

    {
        A.top = new node;
        A.bot = A.top;
        A.top->data = data;
        A.top->next = NULL;
        A.top->prev = NULL;
    }

    else

    {
        p = new node;
        p->data = data;
        p->next = NULL;
        p->prev = A.bot;
        A.bot->next = p;
        A.bot = p;
    }

}
void create_list_push(List& A, int n)

{

    int i, data;

    A.top = NULL;

    A.bot = A.top;

    for (i = 0; i < n; i++)

    {

        cout << " enter data=";

        cin >> data;

        push(A, data);

    }

}
void show(List& A)

{
    node* p;
    p = A.top;
    while (p)
    {
        cout << p->data << ' ';
        p = p->next;
    }
    cout << endl;
}
node* find_address(List& A, int x)
{
    node* p = A.top;

    while (p && p->data != x)
        p = p->next;
    return p;
}
void insert_top(List& A, int x)
{
    node* p = new node;

    p->data = x;
    p->next = A.top;
    p->prev = NULL;
    A.top->prev = p;
    A.top = p;
}
void insert_end(List& A, int x)
{
    node* p = new node;
    p->data = x;
    p->prev = A.bot;
    p->next = NULL;
    A.bot->next = p;
    A.bot = p;
}
void insertelem(List& A, node* q, int x) 
{
    {
        node* p = new node;
        p->data = x;
        if (q == A.top)
        {
            p->next = A.top;
            p->prev = NULL;
            A.top->prev = p;
            A.top = p;
        }
        else
        {
            p->prev = q->prev;
            q->prev = p;
            p->prev->next = p;
            p->next = q;
        }
    }
}
void topdelete(List& A, int& data)
{
    node* p;
    if (length(A) > 1)
    {
        data = A.top->data;
        p = A.top->next;
        p->prev = NULL;
        delete A.top;
        A.top = p;
    }
    else
        if (length(A) == 1)
        {
            data = A.top->data;
            delete A.top;
            A.top = NULL;
            A.bot = NULL;
        }
}
void botdelete(List& A, int& data)
{
    node* p;
    if (length(A) > 1)
    {
        data = A.bot->data;
        p = A.bot->prev;
        p->next = NULL;
        delete A.bot;
        A.bot = p;
    }
    else
        if (length(A) == 1)
        {
            data = A.bot->data;
            delete A.bot;
            A.top = NULL;
            A.bot = NULL;
        }
}
void bubblesort(List& A)
{
    node* p, * q;
    int r;
    p = A.top;
    while (p->next)
    {
        q = p->next;
        while (q)
        {
            if (p->data > q->data)
            {
                r = p->data;
                p->data = q->data;
                q->data = r;
            }
            q = q->next;
        }
        p = p->next;
    }
}
int main()
{
    int n, topelem, endelem, data, data1, data2;
    List A;
    cout << " n= ";
    cin >> n;
    createlist(A, n);
    cout << " list = ";
    show(A);
    cout << "enter topelem = ";
    cin >> topelem;
    insert_top(A, topelem);
    cout << " list = ";
    show(A);
    cout << "enter endelem = ";
    cin >> endelem;
    insert_end(A, endelem);
    cout << " list = ";
    show(A);
    cout << " insert data1 before data2 " << endl;
    cout << "data2 = ";
    cin >> data2;
    cout << "data1 = ";
    cin >> data1;
    insertelem(A, find_address(A, data2), data1);
    cout << " list = ";
    show(A);
    if (!empty(A))
    {
        topdelete(A, data);
        cout << endl << "data top=  " << data << endl;
    }
    cout << " list = ";
    show(A);
    if (!empty(A))
    {
        botdelete(A, data);
        cout << endl << "data end=  " << data << endl;
    }
    cout << " list = ";
    show(A);
    bubblesort(A);
    cout << "Result of bubble sort is: " << endl;
    show(A);

}


Ответы (0 шт):