Свързан списък Реализация на стек в C++

Така че предполагам, че въпросът ми е малко глупав, но току-що започнахме свързани списъци, стекове и опашки и се чувствам малко изгубен по отношение на синтаксиса.

Имам работеща структура на свързан списък с добавяне отзад и отпред, натискане, изскачане, изтриване и т.н., но се губя лудо, когато става въпрос за извикване на тези функции в реализацията на стека. Декларацията на клас Linked List е в заглавен файл с дефиниции на функции в .cpp файл. Стекът е точно същата история. Получихме заглавния файл с декларации на функции и трябва да напишем нашите собствени дефиниции в отделен .cpp файл.

Проблемът ми е в извикването на свързаните списъчни функции във функциите на стека. Стекът включва "LList данни" (структурата на свързания списък се нарича LList); указател към цяло число (предполагам) "int *data" и цяло число, проследяващо горната част на стека "int t"

Функциите, които трябва да напишем, са конструктор, деструктор, pop, push и size функции. Бих дал изходния код, но той наистина не е нещо важно, с което да се работи.

Надявам се, че въпросът ми може да бъде разбран >_‹ Благодаря предварително Камерън


person Chewpacker    schedule 13.09.2014    source източник
comment
Всъщност не си описал какъв е проблема...   -  person wakjah    schedule 14.09.2014
comment
По принцип не знам откъде да започна, когато става въпрос за дефиниране на дадените стекови функции и не знам как да извикам вече съществуващите функции на свързания списък във файла с дефиниция на стекова функция   -  person Chewpacker    schedule 14.09.2014
comment
Ако вече имате работещ свързан списък, изглежда, че трябва да имате само натискане отзад и изскачане отзад, за да го третирате като стек. Без да видите кода, който имате, е трудно да се каже.   -  person Logicrat    schedule 14.09.2014
comment
Съжаляваме, въпросът ви е твърде широк, моля, изяснете го.   -  person GingerPlusPlus    schedule 14.09.2014
comment
Ако е дадено цяло число, стойност, за насочване към стека, как бихте извикали функцията на свързания списък push_front(Value) в дефиницията на функцията на стека на функцията за насочване?   -  person Chewpacker    schedule 14.09.2014


Отговори (1)


Стекът е просто свързан списък с различни интерфейсни функции. Трябва само да можете да push елемента до "горната" част на стека и pop от върха.

Изглежда, че внедряването на вашия клас Stack е проектирано да бъде обвивка около класа LList, който вече имате.

Без да навлизаме в подробности (което е доста трудно, без да гледаме кода),

  1. Имате Stack клас с LList като членска променлива (за предпочитане частна).
  2. Вашата функция push трябва просто да се вмъкне в опашката на вашия свързан списък.
  3. Вашата функция pop трябва да премахне последния елемент от опашката на вашия свързан списък
  4. Вашата ~Stack реализация трябва да изтрие създадения от вас LList обект; можете да пропуснете това, ако използвате интелигентни указатели, или да използвате ключовата дума delete, ако ръчно сте създали обект с помощта на new.

Още код ще помогне за прецизиране на този отговор.

person Sidd    schedule 13.09.2014
comment
Мисля, че ~LList не трябва да се извиква ръчно - извиква се автоматично точно преди обектът да бъде изтрит. Ръчното извикване на d-tor, когато не е предназначено да го позволява, може да причини грешки. - person GingerPlusPlus; 14.09.2014