Помогите с файловым вводом
Мне нужно вводить 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);
}