实验四——链栈
来源:互联网 发布:中交二公院 知乎 编辑:程序博客网 时间: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;}
运行结果
阅读全文
0 0
- 实验四——链栈
- 数据结构实验四——链栈
- S3C2410 实验四——中断实验
- 实验四 链栈
- 数据结构实验(四)—— 排序
- 实验四——DPCM编码
- 实验四——顺序栈
- C++实验四—乘法口诀表
- C++实验四—分数的累加
- C++实验四—乘法口诀表
- c++实验四—分数的累加
- c++实验四—项目七
- JSP在线聊天室——实验四之物理模型
- 软工课题——实验报告四
- 实验四——计算文本中单词的个数
- 实验四 数据查询——简单查询
- c++上机实验四——分数的累积求和
- WIndows第三次实验——C++复习(四)继承
- 【JZOJ 5415】【NOIP2017提高A组集训10.22】公交运输
- MATLAB R2012a课后习题答案
- Java学习笔记之反射
- UVA
- Python学习笔记5-面向对象相关
- 实验四——链栈
- (学习java)顺序循环队列的简易实现
- JavaScript 之 call和apply,bind 的模拟实现
- jdbc调用存储过程
- L1-005. 考试座位号
- requireJs使用初探及模块定义define函数的用法
- 使用 ExceptionDispatchInfo 捕捉并重新抛出异常
- 桥接模式概念和理解
- springboot生成自定义banner