我想在這裏實現使用鏈表棧類Stack類是我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分配給r,例如在推送函數中r-> next = top; 我得到這個錯誤「一個類型的值stack :: linllst *不能被分配給一個int *類型的實體」
有誰知道我在做什麼錯?
任何幫助,將不勝感激 感謝
不應該'int * next;''linklst * next;'?鏈表中的節點應該指向下一個節點,而不是下一個節點包含的數據。 – Proxy