栈
Data Structures Experiment #4 - 设计并实现栈类。
栈可以由顺序表或者链表的方式去实现。通常,栈的操作是固定的,但是在编程过程中有时希望可以由自己控制到底使用链栈还是顺序栈。所以通常使用多态(什么是多态?)去编写链栈与顺序栈的代码。
void push_back(int data);
将data
入栈。int top() const;
询问栈顶元素的值并返回。void pop();
弹出栈顶元素。
SeqStack
0x01 构造函数
分配MAX_ELEMENTS
大小的内存空间。
“栈顶指针”初始化为0。
1 | SeqStack::SeqStack(){ |
0x02 push_back
判断栈满否。
栈未满则压入栈,“栈顶指针”上移。
1 | void SeqStack::push_back(int data){ |
0x03 top
判断栈空否。
栈不空则返回“栈顶指针”下一位的数值。
1 | int SeqStack::top() const{ |
0x04 pop
判断栈空否。
栈不空则“栈顶指针”下移。
1 | void SeqStack::pop(){ |
0x05 析构函数
释放内存。
1 | SeqStack::~SeqStack(){ |
LinkStack
0x01 构造函数
栈顶指针初始化为空。
1 | LinkStack::LinkStack(){ |
0x02 push_back
链入栈。
1 | void LinkStack::push_back(int data){ |
0x03 top
判断栈空否。
栈不空则返回栈顶指针处的数值。
1 | int LinkStack::top() const{ |
0x04 pop
判断栈空否。
栈不空则将栈顶元素弹出栈并释放内存。
1 | void LinkStack::pop(){ |
0x05 析构函数
逐结点释放内存。
1 | LinkStack::~LinkStack(){ |