#include "iostream"
using namespace std;
class StackNode {
public:
int data;
StackNode *next;
StackNode(int x) : data(x), next(nullptr) {}
};
class LinkStack {
public:
LinkStack();
~LinkStack();
//进栈
void push(int x);
//出栈
int pop();
//得到栈顶元素
int getTop();
//判断栈是否为空
bool isEmpty();
private:
StackNode *top;//指向栈顶的指针(栈顶指针)
};
LinkStack::LinkStack() {
this->top = nullptr;
}
LinkStack::~LinkStack() {
StackNode *cur;
while(top != nullptr) {
cur = top;
top = top->next;
delete cur;
}
}
//进栈
void LinkStack::push(int x) {
StackNode *newNode = new StackNode(x);
// newNode->data = x;
// newNode = top;
// top->next = newNode;
newNode->next = top;
top = newNode;
}
//出栈
int LinkStack::pop() {
if(isEmpty()) return -1;
int x;
x = top->data;
StackNode *n = top;
top = top->next;
delete n;
return x;
}
//得到栈顶元素
int LinkStack::getTop() {
if(top == nullptr) return -1;
return top->data;
}
//判断栈是否为空
bool LinkStack::isEmpty() {
if(top == nullptr) return true;
return false;
}
int main() {
LinkStack ls;
ls.push(10);
ls.push(20);
ls.push(30);
cout << ls.pop() << endl;
return 0;
}
栈的链式存储结构既简单实现
最新推荐文章于 2024-07-13 19:27:27 发布