я пытаюсь реализовать класс стека, используя связанный список здесь мой stack.hРеализация класса стека в C++
// File: Stack.h
#ifndef STACK_H
#define STACK_H
class Stack
{
private:
struct linklst{
int num;
int* next;
};
linklst* top;
public:
Stack();
~Stack();
void push(int i);
int pop();
bool isempty();
};
#endif
и мой стек .cpp
// Stack.cpp
#include"Stack.h"
using namespace std;
Stack::Stack(){
top = new linklst();
top->num = -1;
top->next = nullptr;
};
Stack::~Stack() {
linklst * r = new linklst();
while (true)
{
r = top;
top = top->next;
delete r;
}
delete top;
};
void Stack::push(int i){
linklst * r = new linklst();
r->num = i;
r->next = top;
top = r;
};
int Stack::pop(){
if (!isempty){
linklst * r = top;
top = top->next;
int x = r->num;
delete r;
return x;
}
};
bool Stack::isempty(){
return (top->next == nullptr);
};
Моя проблема заключается в cpp, когда я пытаюсь назначить top to r, например, например, в push-функции r-> next = top; Я получаю эту ошибку «значение типа stack :: linllst * не может быть присвоено сущности типа int *»
Кто-нибудь знает, что я делаю неправильно?
Любая помощь будет оценена Благодарности
Не следует 'int * next;' be 'linklst * next;'? Узел в связанном списке должен указывать на следующий узел, а не на данные, которые содержит следующий узел. – Proxy