Стацк има само један крај отворен за гурање и искакање елемената података с друге стране. Куеуе има оба краја отворена за енкуеуинг и декуеуинг елемената података.
Стацк и ред су структуре података које се користе за похрањивање елемената података и заправо се темеље на неком еквиваленту стварног свијета. На пример, стог је хрпа ЦД-а где можете да извадите и ставите ЦД на врх стог ЦД-а. Слично томе, ред је ред чекања за казалишне карте где ће се прво налазити особа која стоји на првом месту, тј. Испред реда чекања, а нова особа која стиже ће се појавити на задњој страни реда (задњи крај реда).
Цомпарисон Цхарт
Основа за поређење | Стацк | Куеуе |
---|---|---|
Принцип рада | ЛИФО (последњи на првом месту) | ФИФО (први на првом излазу) |
Структура | Исти крај се користи за уметање и брисање елемената. | Један крај се користи за уметање, тј. Задњи део а други крај се користи за брисање елемената, тј. Предњи крај. |
Број кориштених показивача | Један | Два (у случају једноставног реда чекања) |
Операције извршене | Пусх анд Поп | Енкуеуе и декуеуе |
Испитивање празног стања | Топ == -1 | Фронт == -1 || Фронт == Задњи + 1 |
Преглед пуног стања | Врх == Макс - 1 | Задњи == Мак - 1 |
Варијанте | Нема варијанти. | Има варијанте попут кружног реда, приоритетног реда, двоструко завршеног реда. |
Имплементација | Једноставније | Цомпаративели цомплек |
Дефиниција Стацк-а
Стацк је не-примитивна структура података. То је наручена листа где се додаје нова ставка и постојећи елемент се брише само са једног краја, позван као врх стог (ТОС). Пошто се све брисање и уметање у стог врши са врха стог, последњи додани елемент ће бити први који ће бити уклоњен из стог. То је разлог зашто се стацк зове Ласт-ин-Фирст-оут (ЛИФО) тип листе.
Имајте на уму да је елемент који се често приступа у стогу највиши елемент, док је последњи доступан елемент на дну стог.
Пример
Неки од вас могу јести кекс (или Поппинс). Ако претпоставите, само једна страна поклопца је покидана, а кекси се узимају један по један. То је оно што се назива искакање, и слично, ако желите да сачувате неко пециво неко време касније, вратит ћете их назад у чопор кроз исти подерани крај који се зове гурање.
Дефиниција реда чекања
Ред је линеарна структура података која долази у категорију не-примитивног типа. То је скуп сличних елемената. Додавање нових елемената одвија се на једном крају названом задњи крај. Слично томе, брисање постојећих елемената одвија се на другом крају названом Фронт-енд, и логички је тип листе Фирст ин фирст оут (ФИФО).
Пример
У нашем свакодневном животу наилазимо на многе ситуације у којима чекамо жељену услугу, тамо морамо ући у ред чекања да дође ред на сервис. Овај ред чекања се може сматрати редом.
Кључне разлике између стог и редова
- Стацк прати ЛИФО механизам с друге стране Куеуе слиједи ФИФО механизам за додавање и уклањање елемената.
- У стог, исти крај се користи за уметање и брисање елемената. Напротив, два реда се користе у реду за уметање и брисање елемената.
- Пошто Стацк има само један отворени крај, то је разлог за коришћење само једног показивача да се односи на врх стог. Али ред користи два показивача за упућивање предњег и задњег краја реда.
- Стацк извршава две операције познате као пусх и поп док је у Куеуе-у познат као енкуеуе и декуеуе.
- Имплементација стогова је лакша, док је имплементација реда лукава.
- Куеуе има варијанте попут кружног реда, приоритетног реда, двоструко завршеног реда, итд. Насупрот томе, стацк нема варијанте.
Стацк Имплементатион
Стацк се може применити на два начина:
- Статичка имплементација користи низове за креирање стог. Статичка имплементација је техника без напора, али није флексибилан начин стварања, јер се декларација о величини стог мора урадити током дизајнирања програма, након чега се величина не може мијењати. Поред тога, статичка имплементација није веома ефикасна у погледу употребе меморије. Пошто је низ (за имплементацију стацк-а) декларисан пре почетка операције (у време пројектовања програма). Сада, ако је број елемената које треба разврстати у стацку много мањи, статички додељена меморија ће бити изгубљена. С друге стране, ако постоји више бројева елемената који ће бити похрањени у стацку онда не можемо промијенити величину поља како би повећали његов капацитет, тако да може примити нове елементе.
- Динамичка имплементација се назива и представљање повезане листе и користи показиваче за имплементацију типа структуре података.
Имплементација реда чекања
Ред се може имплементирати на два начина:
- Статичка имплементација : Ако је ред примењен помоћу низова, тачан број елемената које желимо да сачувамо у реду мора бити обезбеђен пре, јер се величина поља мора декларисати у време пројектовања или пре почетка обраде. У овом случају, почетак поља ће постати предњи део реда, а последња локација поља ће деловати као задњи део реда. Следећи однос даје целим елементима који постоје у реду када се имплементирају помоћу поља:
предња - задња + 1
Ако "задњи <фронт" онда неће бити елемента у реду или ред ће увек бити празан. - Динамичка имплементација : Имплементација редова помоћу показивача, главни недостатак је да чвор у повезаном представљању троши више меморијског простора него одговарајући елемент у приказу низа. Пошто у сваком чвору постоји најмање два поља за поље података и друго за чување адресе следећег чвора, док у повезаном приказу постоји само поље података. Заслуга коришћења повезане репрезентације постаје очигледна када је потребно уметнути или избрисати елемент у средини групе других елемената.
Операције на Стацку
Основне операције које се могу радити на стогу су следеће:
- ПУСХ : када се нови елемент дода на врх стог познат је као ПУСХ операција. Гурање елемента у стог позива на додавање елемента, пошто ће нови елемент бити убачен на врху. После сваког притиска, врх се повећава за један. Ако је низ пун, а не може се додати нови елемент, он се зове СТАЦК-ФУЛЛ увјет или СТАЦК ОВЕРФЛОВ. ПУСХ ОПЕРАТИОН - функција у Ц:
С обзиром да је стацк декларисан каоint stack [5], top = -1;
void push()
{
int item;
if (top < 4)
{
printf ("Enter the number") ;
scan ("%d", & item) ;
top = top + 1;
stack [top] = item;
}
else
{
printf (" Stack is full");
}
}
- ПОП : Када се елемент избрише са врха стог, он је познат као ПОП операција. Стацк је смањен за један, након сваке поп операције. Ако не постоји елемент који је остављен на стацк-у, а поп се изводи, то ће резултирати СТАЦК УНДЕРФЛОВ увјетом што значи да је ваш стацк Емпти. ПОП ОПЕРАТИОН - функције у Ц:
С обзиром да је стацк декларисан каоint stack [5], top = -1;
void pop()
{
int item;
if (top >= 4)
{
item = stack [top];
top = top - 1;
printf ("Number deleted is = %d", item) ;
}
else
{
printf (" Stack is empty");
}
}
Операције у реду
Основне операције које се могу извршити на реду су:
- Енкуеуе : За уметање елемента у ред чекања.
Ред је декларисан каоint queue [5], Front = -1 and rear = -1;
void add ()
{
int item;
if ( rear < 4)
{
printf ("Enter the number") ;
scan ("%d", & item) ;
if (front == -1)
{
front =0 ;
rear =0 ;
}
else
{
rear = rear + 1;
}
queue [rear] = item ;
}
else
{
printf ("Queue is full") ;
}
}
- Декуеуе : За брисање елемената из реда чекања.
Ред је декларисан каоint queue [5], Front = -1 and rear = -1;
void delete ()
{
int item;
if ( front ! = -1)
{
item = queue [ front ] ;
if (front == rear)
{
front =-1 ;
rear =-1 ;
}
else
{
front = front + 1;
printf ("Number deleted is = %d", item) ;
}
}
else
{
printf ("Queue is empty") ;
}
}
Апплицатионс оф Стацк
- Парсинг у компајлеру.
- Јава виртуална машина.
- Поништите у програму за обраду текста.
- Дугме Назад у Веб прегледачу.
- ПостСцрипт језик за штампаче.
- Имплементација позива функција у компајлеру.
Апплицатионс оф Куеуе
- Дата Буфферс
- Асинхрони пренос података (датотека ИО, цеви, утичнице).
- Додељивање захтева за дељени ресурс (штампач, процесор).
- Анализа саобраћаја.
- Одредите број благајника у супермаркету.
Закључак
Стацк и Куеуе су линеарне структуре података које се разликују на одређени начин, као што су радни механизам, структура, имплементација, варијанте, али се оба користе за похрањивање елемената у листи и извођење операција на листи као што су додавање и брисање елемената. Иако постоје нека ограничења једноставног реда који се опоравља коришћењем других врста реда.