实验四——链栈

来源:互联网 发布:中交二公院 知乎 编辑:程序博客网 时间:2024/06/06 03:08

一、实验目的

1、熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。

2、学会使用栈和队列解决实际问题。

 

二、实验内容

1、自己确定结点的具体数据类型和问题规模:

建立一个链栈,实现栈的压栈和出栈操作。


三、源代码

#include <iostream>using namespace std;template<typename T> struct Node{T data;Node *next;};template<typename T> class LinkStack{public:LinkStack(){top=NULL;}//~LinkStack(); void Push(T x);//元素x入栈 T Pop();//一次出栈操作 T GetTop();//读取栈顶元素 int Empty();private:Node<T> *top;//链栈头指针 };template<typename T> void LinkStack<T>::Push(T x){Node<T> *p;p=new Node<T>;p->data=x;p->next=top;top=p;}template<typename T> T LinkStack<T>::Pop(){Node<T> *s;T x;if(top==NULL) throw"下溢";x=top->data;s=top;top=top->next;delete s;return x;}template<typename T> T LinkStack<T>::GetTop(){if(top!=NULL)return top->data;}template<typename T> int LinkStack<T>::Empty(){if(top==NULL) return 1;else return 0;}template<typename T> LinkStack<T>::~LinkStack(){Node<T> *p;while(top!=NULL){p=top->next;delete top;top=p;}}int main(){LinkStack<int> L;if(L.Empty()==1) cout<<"栈空"<<endl;cout<<"1,2,3,4依次入栈"<<endl;L.Push(1);L.Push(2);L.Push(3);L.Push(4);cout<<"读取栈顶元素:"<<L.GetTop()<<endl;cout<<"执行一次出栈操作:"<<L.Pop()<<endl;cout<<"读取栈顶元素:"<<L.GetTop()<<endl;cout<<"执行一次出栈操作:"<<L.Pop()<<endl;cout<<"读取栈顶元素:"<<L.GetTop()<<endl;cout<<"执行一次出栈操作:"<<L.Pop()<<endl;cout<<"读取栈顶元素:"<<L.GetTop()<<endl;}

运行结果






原创粉丝点击