129
else{ // тізім ортасына
(pt->prev)->next = pv;
pv->prev = pt->prev;}
pt->prev = pv;
return;
}
pt = pt->next;
}
pv->next = 0; //тізім соңына
pv->prev = *pend;
(*pend)->next = pv;
*pend = pv;
}
Стектер
Стек – бұл құрамына элемент қосу жəне оны таңдау стектің төбесі деп ата-
латын бір басынан ғана орындалатын бірбағытты тізімнің дербес түрі. Стек-
ке қолданылатын басқа операциялар анықталмаған. Таңдау кезінде элемент
стектен алынып тасталады. Стек LIFO (last in – fi rst out, соңғы болып енеді
– бірінші болып шығады) қызмет көрсету принципін жүзеге асырады. Стекті
бір ұшы жабық, ішіне доп лақтырылатын тар ұзынша құбыр ретінде елестету-
ге болады. Ең бірінші салынған допты алу үшін, одан кейін салынған барлық
доптарды шығарып алу керек. Жергілікті (локалды) айнымалыларға жады
LIFO принципі бойынша бөлінетін болғандықтан, стек сегменті дəл осылай
аталған. Стектер жүйелі программалық жабдықтамаларда, компиляторларда,
əртүрлі рекурсивті алгоритмдерде кеңінен қолданылады.
Төмендегі программа 5 саннан тұратын (1, 2, 3, 4, 5) стек құрады жəне оны
экранға шығарады. Дəстүр бойынша стекке орналастыру функциясын
push
,
ал таңдау функциясын
pop
деп атайды. Стекпен жұмыс жасауға арналған
нұсқауыш (
top
) əрқашан оның төбесіне сілтеме жасайды.
#include
struct Node{
int d;
Node *p;
};
Node * fi rst(int d);
void push(Node **top, int d);
int pop(Node **top);
Достарыңызбен бөлісу: