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

该实验旨在熟练掌握栈和队列的顺序与链式存储结构,实现压栈、出栈、入队、出队操作,并通过实际问题如二进制转换和模拟饭堂排队来应用这些数据结构。实验步骤包括数据类型定义、算法设计、代码实现和实验报告编写。选做题是一个模拟饭堂排队的管理系统。实验要求遵循预习、报告规范和源代码提交。
摘要由CSDN通过智能技术生成

一、实验目的

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

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

二、实验内容

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

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

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

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

3、选做题(*

设计一个模拟饭堂排队打饭管理软件,实现“先来先打饭”的排号叫号管理。

三、实验步骤

1、依据实验内容分别说明实验程序中用到的数据类型的定义;

2、相关操作的算法表达;

3、完整程序;

4、总结、运行结果和分析。

5、总体收获和不足,疑问等。

四、实验要求

1、   按照数据结构实验任务书,提前做好实验预习与准备工作。

2、   加“*”为选做题。做好可加分。

3、   严格按照数据结构实验报告模板和规范,及时完成实验报告。

4、   在个人主页上发文章提交作业。

5、   实验课会抽查3-5人,希望你可以被查到!

源代码如下:

#include<iostream>
using namespace std;
const int QueueSize=100;    //最大长度

class CirQueue
{
	public:
		CirQueue(){
			front=rear=QueueSize-1;
		}
		~CirQueue(){}
		void EnQueue(int x);
		int DeQueue();
		int GetQueue();
		int Empty(){
			if(front==rear)
			return 1;
			else return 0;
		} 
	private:
		int data[QueueSize];
		int front,rear;
} ;

void CirQueue::EnQueue(int x)
{
	if((rear+1)%QueueSize==front)throw"上溢";
	rear=(rear+1)%QueueSize;
	data[rear]=x; 
} 

int CirQueue::DeQueue()
{
	while(front!=rear)    
    {   front=(front+1)%QueueSize;
	    return data[front];  
    }    
	
}

int CirQueue::GetQueue()
{
	int i;
	if(rear==front)throw"下溢";
	i=(front+1)%QueueSize;
	return data[i];
}

int main()
{
	cout<<"1.入队"<<endl;
	cout<<"2.出队"<<endl;
	cout<<"3.判空"<<endl;
	cout<<"4.退出"<<endl;

	int x,t,flag=1;
	CirQueue Cir;

	while(flag==1)
	{
			cout<<"请输入想进行的操作:"<<endl;
			cin>>t;
			switch(t)
			{
			case 1:
				{
				cout<<"入队数据为:";
				while(x)
				{
				cin>>x;
				if(x!=0)
				Cir.EnQueue(x);
				}
				cout<<endl;
				break;
				}
			case 2:
				cout<<"出队数据为:";
				cout<<Cir.DeQueue();
				cout<<endl<<endl;
				break;
			case 3:
				cout<<"判空操作,如果为空,输出1;不为空,输出0:"<<endl<<Cir.Empty();
				cout<<endl<<endl;
				break;
			case 4:
				{
						flag=0;
						break;
				}			
			default:
				{
				cout<<"请输入数字1-4!"<<endl;
				break;
				}
			}
	}
	return 0;
}

实验结果如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值