📄 kehu2.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 + -