Класа Јава Стацк проширује класу Вецтор. Омогућава вам да креирате нове елементе, прегледате елемент у стеку, ажурирате елемент у стеку и избришете све елементе из стека. Скупови обрађују податке по редоследу први-последњи (ФИЛО). То значи да ставке можете додати или уклонити само са врха гомиле.

Структура података стека има пет примарних метода. Међутим, класа Јава Стацк такође има приступ преко 40 других метода, које наслеђује од класе Вецтор.

Креирање стека у Јави

Класа Стацк има један конструктор што вам омогућава да креирате празан стек. Сваки стек има аргумент типа, који диктира тип података који ће складиштити.

увоз јава.утил. Гомила;

јавностикласаГлавни{
јавностистатичнепразнинаглавни(Стринг[] аргументи){
// креирати стек
Гомила Купци = Нова Гомила();
}
}

Код изнад креира структуру података стека тзв Купци који чува стринг вредности.

Попуњавање стека

Једна од пет примарних метода класе Стацк је пусх() методом. Потребна је једна ставка која има исти тип података као и стек и гура ту ставку на врх стека.

instagram viewer
// попуњавање стека
Цустомерс.пусх("Јане Дое");
Цустомерс.пусх("Јохн Дое");
Цустомерс.пусх("Патрицк Виллиамс");
Цустомерс.пусх("Паул Смитх");
Цустомерс.пусх("Ерицк Рове");
Цустомерс.пусх("Ела Џонс");
Цустомерс.пусх("Јессица Бровн");

Код изнад попуњава куповни стог са седам ставки. Сваку нову ставку гура на врх стека. Дакле, ставка на врху листе купаца је Џесика Браун. И то можете потврдити користећи Стацк завирити () методом. Тхе завирити () метода не узима аргументе. Враћа објекат на врху стека без уклањања.

// преглед објекта на врху стека
Систем.оут.принтлн (Цустомерс.пеек());

Горњи код враћа следећи излаз на конзолу:

Јессица Бровн

Прегледајте ставке у хрпи

Структура података стека је прилично рестриктивна у погледу начина на који вам омогућава интеракцију са њеним подацима. Требало би да користите стек преко његове највише ставке. Међутим, можете користити и методе наслеђене из класе Вецтор за приступ произвољним елементима. Такве методе укључују елементАт и ремовеЕлементАт.

Најлакши начин да добијете преглед садржаја стека је једноставно да га одштампате. Проследите Стацк објекат Систем.оут.принтлн а Стацкова метода тоСтринг() ће произвести леп резиме:

// види све елементе стека
Систем.оут.принтлн (Купци);

Код изнад штампа следећи излаз на конзоли:

[Џејн Доу, Џон До, Патрик Вилијамс, Пол Смит, Ерик Роу, Ела Џонс, Џесика Браун]

Тражење позиције ставке у стеку

Ако знате ставку у стеку, можете идентификовати њену индексну позицију или њену позицију у односу на врх стека. Тхе индекс() метода узима ставку у стеку и враћа њену индексну позицију. Имајте на уму да стек почиње да индексира своје ставке на нули.

// проналазимо позицију индекса ставке
Систем.оут.принтлн (Цустомерс.индекОф("Јане Дое"));

Код изнад штампа следећи излаз на конзоли:

0

Тхе Претрага() метода је једна од примарних метода класе Стацк. Враћа позицију ставке у односу на врх стека, где ставка на врху стека има позицију број један.

Систем.оут.принтлн (Цустомерс.сеарцх("Јане Дое"));

Код изнад штампа следећи излаз на конзоли:

7

Ако снабдевате Претрага() или индекс() методе са ставком која није у стеку, они ће вратити негативну.

Систем.оут.принтлн (Цустомерс.сеарцх("Елса Дое"));
Систем.оут.принтлн (Цустомерс.индекОф("Елса Дое"));

Код изнад штампа следећи излаз на конзоли:

-1
-1

Ажурирање ставки у стеку

Можете манипулисати само ставком на врху стека. Дакле, ако желите да ажурирате елемент који није на врху стека, мораћете да избаците све ставке изнад њега. Тхе поп() метода је једна од примарних метода Стацк-а. Тхе поп() метода не узима аргументе. Уклања ставку на врху гомиле и враћа је.

// ажурирање објекта
Цустомерс.поп();
Цустомерс.поп();
Цустомерс.пусх("Ела Џејмс");
Цустомерс.пусх("Јессица Бровн");
Систем.оут.принтлн (Купци);

Код изнад штампа следећи излаз на конзоли:

[Џејн Доу, Џон Доу, Патрик Вилијамс, Пол Смит, Ерик Роу, Ела Џејмс, Џесика Браун]

Као што видите из излаза, код ажурира Еллино презиме у Џејмс. Укључује процес који избацује ставке из стека док не стигнете до циљног објекта. Затим искаче циљни објекат; ажурира га; и гура га, заједно са ставкама које су биле на врху циљне ставке, назад у гомилу. Мораћете да користите програм који обавља операције попут оног изнад, сваки пут када желите да ажурирате ставку у свом стеку.

Брисање ставке из гомиле

Да бисте избрисали једну ставку из структуре података стека, поново можете користити метод поп(). Ако ставка коју желите да избришете није на врху, можете да постављате ставке на врху док не дођете до жељене.

Брисање свих ставки у хрпи

Да бисте избрисали све елементе из стека, можете користити а Јава вхиле петља са методом поп() за брисање елемената један по један. Међутим, ефикаснији приступ је коришћење јасно() методом. Тхе јасно() метод је онај који класа Стацк наслеђује од класе Вецтор. Не узима никакве аргументе, не враћа ништа, већ једноставно уклања све елементе унутар структуре података стека.

// избришите све ставке у стеку
Цустомерс.цлеар();
Систем.оут.принтлн (Цустомерс.емпти());

Код изнад брише све ставке у групи купаца. Затим користи празно() метод да проверите да ли је стек празан. Тхе празно() је још један примарни метод класе Јава Стацк. Не узима аргументе и враћа Булову вредност. Овај метод враћа труе ако је стек празан и фалсе у супротном.

Код изнад штампа следећи излаз на конзоли:

истинито

Практичне апликације за структуру података стека

Структура података стека је веома рестриктивна. Не пружа толику флексибилност у обради података као друге структуре података. Ово поставља питање: када треба да користите структуру података стека?

Структура података стека је идеална за апликације које захтевају обраду података обрнутим редоследом. Ови укључују:

  • Апликација која проверава да ли је реч палиндром.
  • Апликација која претвара децималне бројеве у бинарне бројеве.
  • Апликације које омогућавају корисницима да пониште.
  • Игре које омогућавају кориснику да се врати на претходне потезе, као што је партија шаха.