ВУЗ:
Составители:
Рубрика:
. Практикум по курсу «Алгоритмизация и программирование». Часть 2
tail принимают значения NULL.
Для добавления каждого из последующих узлов используется переменная
current, которая будет хранить адрес последнего созданного элемента
списка. Ее начальное значение – адрес первого элемента. Далее для каждого
считанного из файла числа создается новый узел (адрес запоминается в пере-
менной help). Заполняются поля этого узла: info – число из файла, prev
содержит адрес current. Элемент добавляется в конец списка. В заверше-
нии устанавливается признак конца списка (current->next=NULL) и адрес
последнего элемента сохраняется в L.tail.
// определение функции построения двусвязного списка
// из чисел, хранящихся в файле
int CreateTwoWayList(char* file_name, TwoWayList& L)
{
Node *current, *help;
int k;
// открытие файла
FILE* f=fopen(file_name,"r");
if(f==NULL)
{
// Ошибка открытия файла
return -1;
}
// считывание первого числа из файла и
// создание первого элемента списка
if(fscanf(f,"%d",&k)>0)
{
L.head=new Node;
L.head->info=k;
L.head->prev=NULL;
}
else
{
// Файл пуст, следовательно, список тоже пуст
L.head=L.tail=NULL;
return 0;
}
current=L.head;
// считывание еще непрочитанных чисел из файла и
// добавление их в конец списка
while(fscanf(f,"%d",&k)>0)
81
. Практикум по курсу «Алгоритмизация и программирование». Часть 2
tail принимают значения NULL.
Для добавления каждого из последующих узлов используется переменная
current, которая будет хранить адрес последнего созданного элемента
списка. Ее начальное значение – адрес первого элемента. Далее для каждого
считанного из файла числа создается новый узел (адрес запоминается в пере-
менной help). Заполняются поля этого узла: info – число из файла, prev
содержит адрес current. Элемент добавляется в конец списка. В заверше-
нии устанавливается признак конца списка (current->next=NULL) и адрес
последнего элемента сохраняется в L.tail.
// определение функции построения двусвязного списка
// из чисел, хранящихся в файле
int CreateTwoWayList(char* file_name, TwoWayList& L)
{
Node *current, *help;
int k;
// открытие файла
FILE* f=fopen(file_name,"r");
if(f==NULL)
{
// Ошибка открытия файла
return -1;
}
// считывание первого числа из файла и
// создание первого элемента списка
if(fscanf(f,"%d",&k)>0)
{
L.head=new Node;
L.head->info=k;
L.head->prev=NULL;
}
else
{
// Файл пуст, следовательно, список тоже пуст
L.head=L.tail=NULL;
return 0;
}
current=L.head;
// считывание еще непрочитанных чисел из файла и
// добавление их в конец списка
while(fscanf(f,"%d",&k)>0)
81
Страницы
- « первая
- ‹ предыдущая
- …
- 79
- 80
- 81
- 82
- 83
- …
- следующая ›
- последняя »
