• Авторизация


Односвязные,2-связные, многосвязные ЛС 24-06-2009 15:34 к комментариям - к полной версии - понравилось!


Оформим алгоритм в виде программы. 
#include
struct node
{
int value; //Информационный элемент звена списка
node *next; // Указатель на следующее звено списка
};
void main()
{
node *first, *curr;
first = new (node);
curr = first;

(*curr).value = 1;
(*curr).next = new (node);
curr = (*curr).next;
(*curr).value = 2;
(*curr).next = new (node);
curr = (*curr).next;
(*curr).value = 3;
(*curr).next = new (node);
curr = (*curr).next;
(*curr).value = 4;
(*curr).next = new (node);
(*curr).next = NULL;
// Вывод содержимого информационных полей списка
for (curr=first; curr!=NULL; curr=(*curr).next)
cout<<(*curr).value << " ";
}
Формирование линейного двунаправленного списка
Двунаправленный линейный список представляет собой однонаправленный, в котором каждое звено, кроме ссылки на следующее звено, включает ссылку на предыдущее. Для того, чтобы описать двунаправленный список, нам придется изменить нашу структуру, описывающую список. Мы введем дополнительный указатель pred, который будет представлять собой ссылку на предыдущий элемент.
#include
struct node
{
int value; //Информационный элемент звена списка
node *next;// Указатель на следующее звено списка
node *prev //Указатель на предыдущее звено
};
Кроме указателя first, мы введем еще один указатель end, который будет указывать на конечное звено списка. Введем заглавное звено.
void main()
{
int n=0;
node *first, *curr, *end;

first = new (node);
curr = first;
(*curr).value=0;
(*curr).next=NULL;
(*curr).prev=NULL;
end=curr;
В цикле, зададим с клавиатуры несколько элементов списка. При вводе нуля, цикл будет прекращен. Затем, выведем список на экран привычным, нам способом.
cin>>n;
while (n!=0)
{
(*curr).next=new (node);
(*(*curr).next).prev=curr;
curr=(*curr).next;
(*curr).value=n;
(*curr).next=NULL;
end=curr;
cin>>n;
}
for (curr=first; curr!=NULL; curr=(*curr).next)
cout<<(*curr).value << " ";
cout<

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Односвязные,2-связные, многосвязные ЛС | TheLenka - Дневник Рыжей Девчонки | Лента друзей TheLenka / Полная версия Добавить в друзья Страницы: раньше»