⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kehu2.cpp

📁 行天订票系统,一个航天的机票管理系统,主要是针对数据结构来设计的
💻 CPP
字号:
#include "kehu2.h"

Status InitQueue(Kehu2Queue &q)	//构造一个空队列,如果成功则返回1,否则返回0
{
	q.front=q.rear=(Kehu2Ptr)new kehu2;
	if(!q.front)return FALSE;
	q.front->next=NULL;
	return OK;
}

Status EnQueue(Kehu2Queue &q,QElemType e)		//插入元素e为q的新的队尾元素
{
	Kehu2Ptr p;
	p=(Kehu2Ptr)new kehu2;
	if(!p)return FALSE;
	p->data.name=e.name ; p->data.number=e.number;
	p->next=NULL;
	q.rear->next=p;
	q.rear=p;
	return OK;
}

Status EnQueue(Kehu2Queue &q)		//按输入新增队列元素
{
	char ch='1';
	Status cur=1;
	while(ch=='1'&&cur==1)
	{
		QElemType e;
		cout<<"请输入客户姓名:";	cin>>e.name;	cout<<endl;
		cout<<"预约订票量:";		cin>>e.number;	cout<<endl;
		cur=EnQueue(q,e);
		cout<<"继续输入?		1.继续				其它退出";	cin>>ch;	cout<<endl;
	}
	if(cur==1)return OK;
	return FALSE;
}

Status CreateQueue(Kehu2Queue &q,ifstream& infile)		//从文件读入数据,新建队列q
{
	InitQueue(q);
	QElemType e;
	char cur[50];
	char ch;
	int num;
	infile.get(cur,50);
	if(!infile)return FALSE;
	while(infile)
	{
		infile.get(ch);
		infile>>num;
		infile.get(ch);
		e.name=cur ; e.number=num;
		EnQueue(q,e);
		infile.get(cur,50);
	}
	return OK;
}

void PrintQueue(Kehu2Queue q)		//显示客户队列的所有信息
{
	Kehu2Ptr p;
	if(q.front==q.rear)cout<<"队列为空"<<endl;
	else
	{
		p=q.front->next;
		cout<<"==========================================================="<<endl;
		cout<<"	               排队订票的队列"<<endl;
		cout<<"\t\t姓名   |   预约订票量"<<endl;
		while(p)
		{
			cout<<"\t      "<<p->data.name<<"\t\t"<<p->data.number<<endl;
			p=p->next;
		}
	}
}

void PrintQueue_H(Kehu2Queue q)		//显示客户队列头结点的信息
{
	Kehu2Ptr p=q.front->next;
	cout<<"\t\t姓名   |   预约订票量"<<endl;
	cout<<"\t      "<<p->data.name<<"\t\t"<<p->data.number<<endl;
}

Status GetQueue(Kehu2Queue &q,QElemType &e,int i)	//若队列不空且存在符合i要求的结点,则将该结点的值与头结点交换,返回OK;否则返回FALSE
										//e用来传送新的头结点的值
{
	if(q.front==q.rear)return FALSE;
	Kehu2Ptr p,l;
	p=l=q.front->next;
	while(p)
	{
		if(p->data.number<=i)break;
		else p=p->next;
	}
	if(!p)return FALSE;
	e.name=p->data.name;		e.number=p->data.number;
	p->data.name=l->data.name;		p->data.number=l->data.number;
	l->data.name=e.name;		l->data.number=e.number;
	return OK;
}

Status DeQueue(Kehu2Queue &q,QElemType &e)		//若队列不空,则删除q的队头元素,用e返回其值
{
	if(q.front==q.rear)return FALSE;
	Kehu2Ptr p=q.front->next;
	e.name=p->data.name;	e.number=p->data.number;
	q.front->next=p->next;
	p->next=NULL;
	if(q.rear==p)q.rear=q.front;
	delete p;
	return OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -