实验4:栈和队列的基本操作实现及其应用之《链栈》
来源:互联网 发布:零基础学淘宝美工难吗 编辑:程序博客网 时间:2024/05/22 23:58
实验4:栈和队列的基本操作实现及其应用之链栈
一、实验目的
1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。
2、 学会使用栈和队列解决实际问题。
二、实验内容
1、自己确定结点的具体数据类型和问题规模:
分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。
分别建立一个顺序队列和链队列,实现队列的入队和出队操作。
2、设计算法并写出代码,实现一个十将二进制转换成2进制数。
3、选做题(*)
设计一个模拟饭堂排队打饭管理软件,实现“先来先打饭”的排号叫号管理。
三、实验步骤
1、依据实验内容分别说明实验程序中用到的数据类型的定义
实验中选用的是整型来进行栈的数据输入。
2、相关操作的算法表达;
入栈:只需处理栈顶即第一个位置的情况,而无需考虑其他位置的情况。
出栈:只需处理栈顶即第一个位置的情况,而无需考虑其他位置的情况。
3、完整程序;
#include<iostream>using namespace std;const int S=10;struct Node{int data;Node *next;};class LinkStack{public:LinkStack(){top=NULL;}~LinkStack(){}void Push(int x);int Pop();int Gettop(){ if(top!=NULL) return top->data; } int Empty(){if(top==NULL)return 1; else return 0;}private: Node *top;};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 i,s,x;LinkStack Stact;do{cout<<endl<<"\t\t\t 链栈"<<endl<<"\t\t\t输入进栈的数:";cin>>i;cout<<"\t\t\t是否继续输入?(1/0):";cin>>s;Stact.Push(i);}while(s);while(1){cout<<endl<<"\t\t\t 链栈"; cout<<endl<<"\t\t\t 1、入栈";cout<<endl<<"\t\t\t 2、出栈";cout<<endl<<"\t\t\t 3、栈顶数";cout<<endl<<"\t\t\t 4、栈是否为空"; cout<<endl<<"\t\t\t请选择操作(0-4):";cin>>x;cout<<endl;if(x==0)break;switch(x) {case 1: { do { cout<<endl<<"\t\t\t输入进栈的数:"; cin>>i; cout<<"\t\t\t是否继续输入?(1/0):"; cin>>s; Stact.Push(i); } while(s); break;}case 2: { cout<<"\t\t\t出栈:"<<Stact.Pop()<<endl; break; } case 3: { cout<<"\t\t\t栈顶数:"<<Stact.Gettop()<<endl; break; } case 4: { cout<<"\t\t\t栈是否为空:"<<Stact.Empty(); break; }default:{cout<<"\t\t\t请输入数字(0-5)!"<<endl;} } }}
4、总结、运行结果和分析。
5、总体收获和不足,疑问等。
在链栈中,运用循环的方式来进行入栈。链栈对比顺序栈没太大的变化,只是一个用数组,一个用指针来实现。
阅读全文
0 0
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 实验4:栈和队列的基本操作实现及其应用之《循环队列》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用之《顺序队列》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用之《顺序队列》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用之《顺序栈》
- 实验4:栈和队列的基本操作实现及其应用之《顺序栈》
- 实验4:栈和队列的基本操作实现及其应用之《顺序栈》
- 实验4:栈和队列的基本操作实现及其应用之《进制转换》
- 实验4:栈和队列的基本操作实现及其应用之《排号叫号管理》
- 实验4:栈和队列的基本操作实现及其应用之《进制转换》
- 实验4:栈和队列的基本操作实现及其应用——链栈
- 实验4:栈和队列的基本操作实现及其应用——循环队列
- 实验4:栈和队列的基本操作实现及其应用——链队列
- python基础——paramiko模块
- Android开发:RecyclerView平滑流畅的滑动到指定位置
- C++实习笔记(2)
- 4.1 docker-1.12 run命令运行以及参数详解
- BLE-NRF51822教程9—动态密码(配对码)
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- Test 2017.10.08
- 神经进化:一种不一样的深度学习——通过进化算法来探求神经网络的进化
- 2017.10.6 BJOI2015 bzoj4336 骑士的旅行
- echarts
- Appium学习(2)
- Maven项目新建时,项目上出现红叉,但是项目内没有报错
- 版本回退
- 【codeforces】Codeforces Round #441(div.2)