Вы сделали
Стек, По следующей ссылке информация, как сделать
Очередь.
Это все односвязанные списки.
Сразу прошу прощения, за мой PASCAL(в С, у меня меньше практики):
Описание:
[code lang=pascal] pStack=^tStack;{определяем указатель на структуру}
tStack=record{тип структура}
value:integer;{тип или типы, которые Вам нужны}
link:pStack;{указатель, на предыдущий элемент}
end;
pQueue=^tQueue;{определяем указатель на структуру}
tQueue=record{тип структура}
value:integer;{тип или типы, которые Вам нужны}
link:pQueue;{указатель на чледующий элемент}
end;[/code]
В обоих случаях описание аналогичное, можно сказать одинаковое.
Что, это будет очередь или стек, зависит, от того как Вы управляете связями в списке.
Создание первого элемента.
Стек:
[code lang=pascal] new(HeadStack);{выделяем память}
HeadStack^.link:=nil;{устанавливаем связь}[/code]
Очередь:
[code lang=pascal] new(HeadQueue);{выделяем память}
HeadQueue^.link:=nil;{устанавливаем связь}
TillQueue:=HeadQueue;{определяем хвост}[/code]
Добавление очередного элемента:
Стек:
[code lang=pascal] new(tempStack);{выделяем память}
tempStack^.link:=HeadStack;{устанавливаем связь на предыдущий эллемент}
HeadStack:=tempStack;{премещаем голову стека}[/code]
Очередь:
[code lang=pascal] new(tempQueue);{выделяем память}
tempQueue^.link:=nil;{ставим маркер, что дальше нет ничего}
TillQueue^.link:=tempQueue;{в хвост списка подключаем следующий элемент}
TillQueue:=tempQueue;{перемещаем хвост списка}[/code]
Извлечение из списка:
Стек:
[code lang=pascal] tempStack:=HeadStack;{Запоминаем указатель головы}
HeadStack:=HeadStack^.link;{перемещаем голову списка}[/code]
Очередь:
[code lang=pascal] tempQueue:=HeadQueue;{Запоминаем казатель головы}
HeadQueue:=HeadQueue^.link;{премещаем голову списка}[/code]
Дека, это двухсвязаный список. Практически он объединяет в себе и Стек и Очередь.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.