Курсовая работа: Обработка динамических структур
} book; //имя созданного типа
typedefstructspisok //создание нового типа запись для хранения информации элемента списка
{
bookinf; //информационные поля
structspisok* next; //указатель на следующий элемент списка
structspisok* pred; //указатель на предыдущий элемент списка
} el; //имя созданного нового типа
//-------------------------------------------------------------\\
el* vvodSp(el **top2) //создание списка
{
chars[3]={'y','e','s'}; //переменная для хранения ответа на вопрос о продолжении ввода списка
el *cur,*pr,*top,*tail,*tail2,*cur2; //указатель
clrscr();
*top2=top=tail=tail2=NULL; //обнуление указателей на начало и хвост списков
printf("Введите первую запись\n");
while(strcmp(strlwr(s),"no")!=0) //пока ответ не равен no
{
cur=(el*)malloc(sizeof(el)); //выделяем память под новый элемент (далее текущий)
cur->next=NULL; //обнуление указателя на следующий элемент текущего элемента
cur->pred=tail; //указатель на предыдущий элемент текущего элемента присваивается хвосту списка
if(top==NULL) top=cur; //если указатель на начало списка пуст то указателем на начало списка становится текущий элемент
elsetail->next=cur; //если нет, то указателем на хвост списка становится текущий элемент
tail=cur; //указатель на хвост приравнивается текущему элементу
cur2=(el*)malloc(sizeof(el)); //выделяется память под новый элемент второго списка, выполняются те же действия
cur2->next=NULL;
cur2->pred=tail2;
if((*top2)==NULL) (*top2)=cur2; // *top2 это указатель на указатель
else tail2->next=cur2;
tail2=cur2;