顺序栈和链栈的基本操作
来源:互联网 发布:桥梁三维建模软件 编辑:程序博客网 时间:2024/05/22 16:44
一、实验目的
1、 熟练掌栈的结构特点,掌握栈的顺序存储和链式存储结构和实现。
2、 学会使用栈解决实际问题。
二、实验内容
自己确定结点的具体数据类型和问题规模:
分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。
三、实验代码
1.顺序栈的源代码
const int StackSize=10;template<class DataType>class SeqStack{public:SeqStack();~SeqStack(){};void Push(DataType x);DataType Pop();DataType GetTop();int Empty();private:DataType data[StackSize];int top;};template<class DataType>SeqStack<DataType>::SeqStack(){top=-1;}template<class DataType>void SeqStack<DataType>::Push(DataType x){if(top==StackSize-1)throw"上溢";top++;data[top]=x;}template<class DataType>DataType SeqStack<DataType>::Pop(){DataType x;if(top==-1)throw"下溢";x=data[top--];return x;}template<class DataType>DataType SeqStack<DataType>::GetTop(){if (top!=-1)return data[top];}template<class DataType>int SeqStack<DataType>::Empty(){if(top==-1)return 1;else return 0;}#include <iostream>using namespace std;int main(){SeqStack<int>S;if(S.Empty())cout<<"栈为空"<<endl;elsecout<<"栈非空" <<endl;cout<<"对9和8执行入栈操作"<<endl;S.Push(9);S.Push(8);cout<<"栈顶元素为:"<<endl;cout<<S.GetTop()<<endl;cout<<"执行一次出栈操作:"<<endl;S.Pop();cout<<"栈顶元素为:"<<endl;cout<<S.GetTop()<<endl; }2.顺序栈的实验结果
3.链栈的源代码
#include <iostream>using namespace std;template<class DataType>struct Node{DataType data;Node<DataType>*next;};template<class DataType>class LinkStack{public:LinkStack(){top=new Node<DataType>; 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;}template<class DataType>DataType LinkStack<DataType>::Pop(){DataType x;if(top==NULL)throw"下溢";else{Node<DataType>*p;p=new Node<DataType>;p=top; x=p->data; 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;}int main(){LinkStack<int>S;if(S.Empty())cout<<"栈为空"<<endl;elsecout<<"栈非空" <<endl;cout<<"对9和8执行入栈操作"<<endl;S.Push(9);S.Push(8);cout<<"栈顶元素为:"<<endl;cout<<S.GetTop()<<endl;cout<<"执行一次出栈操作:"<<endl;S.Pop();cout<<"栈顶元素为:"<<endl;cout<<S.GetTop()<<endl; }4.链栈的实验结果
四、心得
这次实验我通过查阅书上的资料和向同学提问,最终操作并调试出了顺序栈和链栈的代码。在调试的过程中仍然会遇到很多细节上的错误,比如少加了分号,或者是打错符号等细节上的错误,也会有一些是声明与定义上的错误,通过自己的查找与同学的提示最终修改成功,基本掌握了顺序栈和链栈的操作。
阅读全文
0 0
- 顺序栈和链栈的基本操作
- 顺序栈和链栈的基本操作
- 顺序栈和链栈的基本操作实现
- 顺序栈的基本操作
- 顺序栈的基本操作....
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- JQuery插件之Cookie
- 关于Calendar工具类的使用
- 22款受欢迎的计算机取证工具
- 侧栏,底部导航,选项卡(未整理,有点乱)
- 二分法求快速幂
- 顺序栈和链栈的基本操作
- 洗牌算法的随机性(数学归纳法)
- MyBatis SQL xml处理小于号与大于号
- kettle问题-表输入插件(问题解决,未找到根源)
- Android通过广播判断网络连接(仿QQ网络连接显示)
- Debian设置合上笔记本盖子不休眠
- Spring boot war部署
- 智慧校园多媒体教室运维构建运维知识库的重要性
- iOS小乐子之买多少注彩票才能中超级大乐透头奖