arrays — пропущены аргументы шаблона перед переполнением стека

Ну, я делаю задание, но не уверен, что моя проблема

это мое задание

Инструкции У вас есть две части этого задания. Части взаимосвязаны, но отличаются по своей реализации. Чтобы лучше понять само назначение, может быть полезно вернуться к книге, слайдам, заметкам и т. Д. И выполнить реализации обычного стека на основе массива и связанного списка, а также стека ADT.

Часть I
Одним из широко используемых стеков является обеспечение операции отмены, знакомой нам по многим различным приложениям. Хотя поддержка отмены может быть реализована с помощью неограниченного стека (который продолжает расти и расти, пока позволяет память), многие приложения предоставляют лишь ограниченную поддержку для такой истории отмен. Другими словами, стек имеет фиксированную емкость.
Когда такой стек заполнен, и вызывается push, а не выдается исключение, более типичным подходом является принятие помещенного элемента сверху, при этом удаляя самый старый элемент снизу стека, чтобы освободить место. Это известно как «утечка». Обратите внимание, что это не означает, что ADT предоставляет метод, позволяющий непосредственно удалить его снизу. Это выполняется только тогда, когда стек заполняется.
В этой части вы должны дать реализацию такой абстракции LeakyStack, используя некоторую реализацию на основе массива.
Обратите внимание, что вы должны создать интерфейс Leaky Stack, а затем использовать оператор C ++: для реализации этого интерфейса (используя публичное наследование) с вашей реализацией LeakyArrayStack. См. Интерфейс, указанный в конце инструкции по назначению.

Часть II Повторите часть I, но используйте односвязный список вместо массива для фактического хранения данных и учитывайте максимальную емкость, указанную в качестве параметра для конструктора.

ПРИМЕЧАНИЯ. • В Leaky Stacks на основе массива и связанного списка должен использоваться один и тот же LeakyStackInterface, указанный ниже. Помните — это LeakyStack ADT. Он определяет, что делает LeakyStack, а не как. Таким образом, интерфейс не должен отличаться, чтобы обеспечить реализацию. • Используйте публичное наследование в обеих частях. • Сначала вы должны написать класс SinglyLinkedList, прежде чем пытаться выполнить часть II. O Затем использовать реализацию (объединение или композиция, отношение has-a) для реализации части II.

Я ДОЛЖЕН ИСПОЛЬЗОВАТЬ ИНТЕРФЕЙС В КАРТИНКЕ

это мой код

    #include <iostream>
#ifndef LEAKYStacksINTERFACE
#define LEAKYStacksINTERFACE
#define cap 10
using namespace std;template<typename ItemType>
class LeakyStacksInterface
{  public:
//returns whether Stacks is empty or not
virtual bool isEmpty() const = 0;

//adds a new entry to the top of the Stacks
//if the Stacks is full, the bottom item is removed
//or "leaked" first, and then the new item is set to the top
//---> If the Stacks was full when the push was attempted, return false
//---> If the Stacks was not full when the push was attempted, return true
virtual bool push(const ItemType& newEntry) = 0;

//remove the top item
//if the Stacks is empty, return false to indicate failure
virtual bool pop() = 0;

//return a copy of the top of the Stacks
virtual ItemType peek() const = 0;

//destroys the Stacks and frees up memory
//that was allocated
// virtual ~StacksInterface() {}
};

template<typename ItemType>
struct node
{
int data;
struct node *next;
};template<typename ItemType>
class Stacks : public LeakyStacksInterface<ItemType>
{

struct node<ItemType> *top;

public:
int size;
ItemType *myArray;

Stacks()
{
top=NULL;
size = 0;
myArray = new ItemType[cap];
}

~Stacks() {
size = 0;
}

public:
// pure virtual function providing interface framework.
bool isEmpty() const {

return(size == 0);

}
bool push(const ItemType& newEntry) {
if(size == cap) {
for(int i = 0; i < size-1; i++) {
myArray[i] = myArray[i+1];
}
myArray[size-1] = newEntry;
return false;
}
}
ItemType peek() const {
return myArray[size-1];
}
void display()
{
cout<<"Stacks: [ ";
for(int i=size-1; i>=0; i--)
{
cout<<myArray[i]<<" ";
}
cout<<" ] "<<endl;
}
};int main()
{
Stacks s;

int choice;

while(1)

{

cout<<"n-----------------------------------------------------------";

cout<<"nttSTACK USING LINKED LISTnn";

cout<<"1:PUSHn2:POPn3:DISPLAY STACKn4:EXIT";

cout<<"nEnter your choice(1-4): ";

cin>>choice;

switch(choice)

{

case 1:

s.push();

break;

case 2:

s.pop();

break;

case 3:

s.show();

break;

case 4:

return 0;

break;

default:

cout<<"Please enter correct choice(1-4)!!";

break;

}

}

return 0;
}

#endif

ЗДЕСЬ МОИ ОШИБКИ:
ОШИБКА: пропущены аргументы шаблона перед ‘s’
ОШИБКА: ожидается ‘;’ до «с»
ОШИБКА: ‘s’ не было удалено в этой области

пожалуйста помоги!
Благодарю вас!

ИНТЕРФЕЙС КАРТИНКА

-2

Решение

Stacks шаблон класса, поэтому для его использования необходимо указать аргумент шаблона, например

Stacks<int> s;
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]