数据结构第三次实验
来源:互联网 发布:淘宝的商家编码是什么 编辑:程序博客网 时间:2024/06/05 15:02
《数据结构》实验三: 栈和队列实验一..实验目的
巩固栈和队列数据结构,学会运用栈和队列。
1.回顾栈和队列的逻辑结构和受限操作特点,栈和队列的物理存储结构和常见操作。
2.学习运用栈和队列的知识来解决实际问题。
3.进一步巩固程序调试方法。
4.进一步巩固模板程序设计。
二.实验时间
准备时间为第5周到第6周,具体集中实验时间为6周第2次课。2个学时。
三..实验内容
1.自己选择顺序或链式存储结构,定义一个空栈类,并定义入栈、出栈、取栈元素基本操作。然后在主程序中对给定的N个数据进行验证,输出各个操作结果。
2.自己选择顺序或链式存储结构,定义一个空栈队列,并定义入栈、出栈、取栈元素基本操作。然后在主程序中对给定的N个数据进行验证,输出各个操作结果。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
源代码如下:
头文件:
- #ifndef LinkQueue_H
- #define LinkQueue_H
- template <class DataType>
- struct Node
- {
- DataType data;
- Node<DataType> * next;
- };
- template<class DataType>
- class LinkQueue
- {
- public:
- LinkQueue(); //构造函数,初始化一个空的链队列
- ~LinkQueue(); //析构函数,释放链队列中各结点的存储空间
- void EnQueue(DataType x); //将元素x入队
- DataType DeQueue(); //将队头元素出队
- DataType GetQueue(); //去链队列的队头元素
- int Empty(); //判断链队列是否为空
- private:
- Node<DataType> * front, *rear;
- };
- #endif
源文件:LinkQueue.cpp
- #include"LinkQueue.h"
- template<class DataType>
- LinkQueue<DataType>::LinkQueue()
- {
- Node<DataType> *s = NULL;
- s= new Node<DataType>;
- s->next=NULL;
- front=rear=s;
- }
- template<class DataType>
- LinkQueue<DataType>::~LinkQueue()
- {
- Node<DataType> *p=NULL;
- while(front!=NULL)
- {
- p=front->next;
- delete front;
- front=p;
- }
- }
- template<class DataType>
- void LinkQueue<DataType>::EnQueue(DataType x)
- {
- Node<DataType> *s =NULL;
- s=new Node<DataType>;
- s->data=x;
- s->next=NULL;
- rear->next=s;
- rear=s;
- }
- template<class DataType>
- DataType LinkQueue<DataType>::DeQueue()
- {
- Node<DataType> * p=NULL;
- int x;
- if(rear==front)throw"下溢";
- p=front->next;
- x=p->data;
- front->next=p->next;
- if(p->next=NULL) rear = front;
- delete p;
- return x;
- }
- template<class DataType>
- DataType LinkQueue<DataType>::GetQueue()
- {
- if(front!=rear)
- return front->next->data;
- }
- template<class DataType>
- int LinkQueue<DataType>::Empty()
- {
- if(front==rear)
- return 1;
- else
- return 0;
- }
源文件LinkQueue_main.cpp:
- #include <iostream>
- using namespace std;
- #include "LinkQueue.cpp"
- void main()
- {
- LinkQueue<int> Q;
- if(Q.Empty())
- cout<<"队列为空"<<endl;
- else
- cout<<"队列非空"<<endl;
- cout<<"元素10和15执行入队操作:"<<endl;
- try
- {
- Q.EnQueue(10);
- Q.EnQueue(15);
- }
- catch(char *wrong)
- {
- cout<<wrong<<endl;
- }
- cout<<"查看队头元素:"<<endl;
- cout<<Q.GetQueue()<<endl;
- cout<<"执行出队操作:"<<endl;
- try
- {
- Q.DeQueue();
- }
- catch(char * wrong)
- {
- cout<<wrong<<endl;
- }
- cout<<"查看队头元素:"<<endl;
- cout<<Q.GetQueue<<endl;
- }
0 0
- 数据结构第三次实验
- 数据结构第三次实验
- 第三次实验
- 第三次实验
- 第三次实验
- 第三次实验
- 第三次实验
- 第三次实验
- 第三次实验
- 第三次实验
- 第三次实验
- 数据结构第三次实验——线性表专题在线评测
- 数据结构第三次
- 第三次C++实验
- 第三次上机实验 报告
- 第三次实验任务
- 第三次上机实验
- 第三次上机实验
- Spring——自动装配
- C#冒泡排序算法
- Spring框架下的定时任务执行
- ThinkPHP使用jquery-jtemplates插件
- ubuntu下程序计时方法
- 数据结构第三次实验
- Web前端调试工具——神奇的Console
- ubuntu 删除mysql
- jQuery Mobile在微信建站方面的应用
- Intersection of Two Linked Lists leetcode
- FreeImage库在C++与C#中的简单使用
- iOS复习笔记1:HelloWorld项目
- Linux搭建SVN服务器极简备忘
- 高质量icon图标