链栈的C++实现
文章目录
#类的界面
#类的实现
前言
在数据结构的学习中我了解到了链栈,故写下这篇博文加以记录,第一次写博文,如果有什么地方可以改善,欢迎大家指出。
一、stack类的界面
#include<iostream>
#define elementype int
using namespace std;
struct node {
elementype date;
node* next;
};
class stack {
public:
stack();
~stack();
void pop();//出栈
void push(elementype& x);//入栈
elementype get_top();//取栈头
bool empty(); //判断栈是否为空
bool full(); //判断栈是否为满
void show(); //输出栈中元素
private:
node* front;
int count;
};
类的实现
stack::stack() {
front = new node;
count = 0;
}
bool stack::empty() {
return count == 0;
}
bool stack::full() {
return false;
}
stack::~stack() {
while (!empty())
pop();
}
void stack::pop() {
node* p = front->next;
front->next = p->next;
delete p;
count--;
}
void stack::push(elementype& x) {
node* q = new node;
q->date = x;
q->next = front->next;
front->next = q;
count++;
}
elementype stack::get_top() {
elementype s;
s = front->next->date;
return s;
}
void stack::show() {
node* a = front->next;
int e = count;
while (e!=0) {
cout << a->date<<" ";
a = a->next;
e--;
}
}