Практикум по курсу "Алгоритмизация и программирование". Часть 2. Андрианова А.А - 81 стр.

UptoLike

. Практикум по курсу «Алгоритмизация и программирование». Часть 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