Министерство развития информационных технологий и коммуникаций республики узбекистан


Реализация стека с помощью списка



Download 2,47 Mb.
Pdf ko'rish
bet24/63
Sana25.02.2022
Hajmi2,47 Mb.
#299632
TuriМетодические указания
1   ...   20   21   22   23   24   25   26   27   ...   63
Bog'liq
ЎТ амал рус

Реализация стека с помощью списка. 
Рассмотрим пример стека, в котором хранятся символы (это простейший 
вариант, элементом стека могут быть любые типы данных или структур, так 
же, как и для списка). Реализуем стек на основе двусвязного списка. При 
этом количество элементов стека ограничивается только доступным объемом 
памяти. 
struct Node { 
char data; 
Node *next, *prev; 
}; 
typedef Node *PNode; 
Чтобы не работать с отдельными указателями на хвост и голову списка, 
объявим структуру, в которой будет храниться вся информация о стеке: 
struct Stack { 
PNode Head, Tail; 
}; 


}
44 
В самом начале надо записать в обе ссылки стека NULL. 
Добавление элемента на вершину стека
 
Фактически это добавление нового элемента в начало двусвязного 
списка. Эта процедура уже была написана ранее, теперь её придётся немного 
переделать, чтобы работать не с отдельными указателями, а со структурой 
типа Stack. В параметрах процедуры указывается не новый узел, а только 
данные
для этого узла, то есть целое число. Память под новый узел 
выделяется в процедуре, то есть, скрыта от нас и снижает вероятность 
ошибки. 
void Push ( Stack &S, char x ) 
{
PNode NewNode; 
NewNode = new Node; // создать новый узел... 
NewNode->data = x; // и заполнить его данными
NewNode->next = S.Head; 
NewNode->prev = NULL; 
if ( S.Head ) // добавить в начало списка 
S.Head->prev = NewNode; 
S.Head = NewNode; 
if ( ! S.Tail ) S.Tail = S.Head; 

Получение верхнего элемента с вершины стека
 
Функция 
Pop
 
удаляет верхний элемент и возвращает его данные.
 
char Pop ( Stack &S ) 
{
PNode TopNode = S.Head; char x; 
if ( ! TopNode ) // если стек пуст, то 
return char(255); // вернуть символ с кодом 255 
x = TopNode->data; 
S.Head = TopNode->next; 


}
45 
if ( S.Head ) S.Head->prev = NULL; // переставить ссылки 
else S.Tail = NULL; 
delete TopNode; // освободить память 
return x; 
}

Download 2,47 Mb.

Do'stlaringiz bilan baham:
1   ...   20   21   22   23   24   25   26   27   ...   63




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish