链栈的实现

来源:互联网 发布:鼠标 知乎 编辑:程序博客网 时间:2024/06/03 17:16

实验4:栈和队列的基本操作实现及其应用

一、实验目的

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

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

二、实验内容

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

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

分别建立一个顺序队列和链队列,实现队列的入队和出队操作。

2、 设计算法并写出代码,实现一个十将二进制转换成2进制数。


链栈的实现:

#includeusing namespace std;struct Node{   int data;   Node * next;   };   class LinkStack{public:LinkStack(){top=NULL;}   //构造函数,初始化一个空栈  ~LinkStack(); void Push(int x);        //入栈操作,将元素X入栈 int Pop();               //出栈操作,将栈顶元素出栈 int GetTop(){if(top!=NULL)return top->data;}   //取栈顶元素(并不删除) int Empty(){if(top==NULL) return 1;else return 0;}   //   判空操作,判断链栈是否为空栈 private:Node * top;    //栈顶指针即链栈的头指针 }; LinkStack::~LinkStack(){Node *q;while(top!=NULL){  q=top;  top=top->next;  delete q;}}void  LinkStack::Push(int x){Node *s; s=new Node;s->data=x;s->next=top;top=s;}int LinkStack::Pop(){int x;Node *p;if(top==NULL)throw"下溢";x=top->data;p=top;top=top->next;delete p;return x;}int main(){     int x,n,d,flag,tab;  LinkStack S;   flag=0;do{cout<<"输入你要的插入的数:"<>n;cout<<"是否继续插入(1/0)"<>d;S.Push(n);}while(d);cout<>tab;   switch(tab)   {   case 1:{                    cout<>x;        S.Push(x);           break;          }   case 2:         {    cout<

执行结果截图:


原创粉丝点击