编程建立循环队列存储结构,对排队买票过程进行模拟,要求程序在控制台屏幕上显示菜单:1.排队—输入新到达的买票人姓名,加入买票队列中。 2.售票—排队队列中最前面的人买票成功,显示信息并将其从队列中删除。3.—查看队列—从队首到队尾依次列出所有排队人姓名;4.—结束退出系统。 “排队”时,若队满,提示等待。 售票时,若队空,提示无人排队(售票失败)
#include <string>
using namespace std;
typedef string QElemType;
typedef int Status;
//--------------(队列的顺序存储结构)-------------
typedef struct QUEUE
{
QElemType *base;//初始化的动态分配存储空间
int front;//头指针
int rear;//尾指针
}SqQueue;
Status InitQueue(SqQueue &Q)
{
Q.base = (QElemType*)malloc(10*sizeof(QElemType));//初始化队列
if (!Q.base)
{
exit(0);
}
Q.rear = Q.front = 0;
return 1;
}
Status QueueEmpty(SqQueue Q)//判断队空
{
if (Q.front == Q.rear)
{
return 1;
}else
{
return 0;
}
}
Status EnQueue(SqQueue &Q, QElemType e)//排队
{
if ((Q.rear+1) % 10==Q.front)//如果队满
{
return 0;
}
Q.base[Q.rear] = e;
Q.rear = (Q.rear+1) %10;
return 1;
}
Status Dequeue(SqQueue Q, QElemType &e)//售票
{
if (Q.front == Q.rear)//队空
{
return 0;
}
e = Q.base[Q.front];
Q.front = (Q.front + 1) %100;
return 1;
}
Status QueueTraverse(SqQueue Q, QElemType e)//查看队列
{
int i;
i = Q.front;
while (i!= Q.rear)
{ cout << Q.base[i];
i = (i + 1) %10;
}
cout << endl;
return 1;
}
int main()
{
cout << "排队:1 售票:2 查看队列:3 结束:4" << endl;
Status InitQueue();
int a;
loop:cin >> a;
if (a == 1) {
int b;
string e;
cin>>e;
Status EnQueue(SqQueue &Q, QElemType e);
b = EnQueue;
if (0); cout<< "waiting" <<endl;
goto loop;
}
if(a==2)
{
char e;
Status Dequeue(SqQueue Q, QElemType &e);
if (Dequeue==0); cout << "no man waiting!" << endl;
if (Dequeue==1); cout << e << "购票成功" << endl;
goto loop;
}
if (a == 3)
{
Status QueueTraverse();
goto loop;
}
if (a == 4); return 0;
}
```不懂返回值。。