Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Добавление элементов в двусвязный список

Определена структура, которая будет использоваться в последующих примерах:

#define LIST struct List

 

LIST

{

char info;

LIST *next;

LIST *prev;

};

 

Функция добавления элементов в двусвязный список:

 

void add(LIST **current, char item) { LIST *new_node; new_node = new LIST; new_node->info = item; if (*current == NULL) { *current=new_node; new_node->next=NULL;   new_node->prev=NULL; }   if ((*current)->next!=NULL) { new_node->next=(*current)->next;     (*current)->next->prev=new_node;     new_node->prev=*current;   (*current)->next=new_node; } else { (*current)->next=new_node;   new_node->prev=*current;   new_node->next=NULL;   (*current)=new_node; } } //current – указатель на текущий элемент списка //новый элемент двусвязного списка //создаем новый элемент двусвязного списка //заполняем поле info //добавление первого элемента двусвязного списка //текущим элементом становится новый элемент //указатель на следующий элемент после нового равен нулю (т.е. элемент не существует) //указатель на предыдущий элемент по отношению к новому равен нулю (т.е. элемент не существует) //добавление элемента в середину двусвязного списка (после текущего элемента) //следующим по отношению к новому элементу становится элемент списка следующий после текущего //предыдущим по отношению к элементу следующего после текущего становится новый элемент //предыдущим по отношению к новому становится текущий элемент //следующим по отношению к текущему элементу становится новый элемент //добавление элемента в конец двусвязного списка //следующим по отношению к текущему становится новый элемент //предыдущим по отношению к новому становится текущий элемент списка //указатель на следующий элемент после нового равен нулю (т.е. элемента не существует) //текущим элементом становится новый элемент списка

 

Пример. Пусть необходимо сформировать двусвязный список, представленный в программе переменной l, состоящий из трех элементов (‘a’,’c’,’b’) (элементы указаны в порядке их добавления в список), упорядоченный по алфавиту. Для этого необходимо использовать функцию add:

 

LIST *l = 0;

add(&l,’a’);

add(&l,’c’);

l = l->prev;

add(&l,’b’);

 

На рис. 3, 4, 5 показаны примеры добавления элементов в начало, середину и конец двусвязного списка соответственно.

Рис.3 – Добавление первого элемента двусвязного списка

Рис. 4 – Добавление элемента в конец двусвязного списка

Рис. 5 – Добавление элемента в середину двусвязного списка


<== предыдущая страница | следующая страница ==>
Двусвязный список | Удаление элементов из двусвязного списка

Дата добавления: 2015-06-30; просмотров: 338; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.003 сек.