Главная страница
Случайная лекция
Мы поможем в написании ваших работ!
Порталы:
БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика
|
Добавление элементов в двусвязный список
Определена структура, которая будет использоваться в последующих примерах:
#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; Нарушение авторских прав Поделиться с ДРУЗЬЯМИ:
|