队列的基本操作实现及其应用
来源:互联网 发布:bbs.h5dm新域名 编辑:程序博客网 时间:2024/05/16 15:14
一、实验目的
1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。
2、 学会使用栈和队列解决实际问题。
二、实验内容
实现栈的压栈和出栈操作。
三、
#include <iostream> using namespace std; template<class DataType>struct Node {DataType data; Node<DataType> *next; }; template <class DataType> class LinkStack{public:LinkStack(){top=NULL;} /*构造函数,初始化空链栈*/~LinkStack();/*析构函数,释放空间*/void Push(DataType x);DataType Pop();DataType GetTop();int Empty();private:Node<DataType>*top;};template<class DataType>void LinkStack<DataType>::Push(DataType x){ Node<DataType>*s;s=new Node<DataType>;s->data=x;s->next=top;top=s; /*将结点s插入到栈顶*/} template<class DataType>DataType LinkStack<DataType>::Pop(){ DataType x; Node<DataType>*p;if(top==NULL)throw"下溢";x=top->data;p=top;top=top->next;delete p;return x;}template<class DataType>DataType LinkStack<DataType>::GetTop(){if (top!=NULL)return top->data;}template<class DataType>int LinkStack<DataType>::Empty(){if(top==NULL)return 1;else return 0;}template<class DataType>LinkStack<DataType>::~LinkStack(){Node<DataType>*s;while(top==NULL){}}int main(){LinkStack<int>S;if(S.Empty())cout<<"空链栈"<<endl;elsecout<<"链栈非空"<<endl;cout<<"将11、12进行入栈操作"<<endl;S.Push(11);S.Push(12); cout<<"取栈顶元素"<<endl;cout<<S.GetTop()<<endl;cout<<"进行出栈处理"<<endl;S.Pop();cout<<"栈顶元素为"<<endl;cout<<S.GetTop()<<endl;S.~LinkStack();return 0;}
阅读全文