Вставка элемента в двунаправленный список
В динамические структуры легко добавлять элементы, так как для этого достаточно изменить значения адресных полей. Операция вставки реализовывается аналогично функции вставки для однонаправленного списка, только с учетом особенностей двунаправленного списка (рис. 29.5).
//вставка элемента с заданным номером в двунаправленный список Double_List* Insert_Item_Double_List(Double_List* Head, int Number, int DataItem){ Number--; Double_List *NewItem=new(Double_List); NewItem->Data=DataItem; NewItem->Prior=NULL; NewItem->Next = NULL; if (Head == NULL) {//список пуст Head = NewItem; } else {//список не пуст Double_List *Current=Head; for(int i=1; i < Number && Current->Next!=NULL; i++) Current=Current->Next; if (Number == 0){ //вставляем новый элемент на первое место NewItem->Next = Head; Head->Prior = NewItem; Head = NewItem; } else {//вставляем новый элемент на непервое место if (Current->Next!= NULL) Current->Next->Prior = NewItem; NewItem->Next = Current->Next; Current->Next = NewItem; NewItem->Prior = Current; Current = NewItem; } } return Head; }
|