作业code2:

- 仿照作业code1的功能,将课本上链表的实现队列能完整实现
- 需要通过main函数调用并能进行友好的人机交互输入

​作业code1​

链表实现队列的代码:

#include<bits/stdc++.h>
#define
#define
using namespace std;
typedef int QElemType;
typedef int Status;
typedef int SElemType;
typedef struct QNode
{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;

LinkQueue q;
QueuePtr p;
Status InitQueue(LinkQueue &Q)
{
Q.front = Q.rear = new QNode;
Q.front->next = NULL;
return OK;
}
Status EnQueue(LinkQueue &Q,QElemType &e)
{
p = new QNode;
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return OK;
}

Status DeQueue(LinkQueue &Q,QElemType &e)
{
if(Q.front == Q.rear)
return ERROR;
p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if(Q.rear == p)
Q.rear = Q.front;
delete p;
return OK;
}

SElemType GetHead(LinkQueue Q)
{
if(Q.front != Q.rear)
return Q.front->next->data;
}
void menu()
{
printf(
"1.入队\n"\
"2.出队\n"\
"3.取队首\n"\
"4.menu\n"
"0.退出\n"\
);
}

int main()
{
menu();
int e,choose;
int k=0;
InitQueue(q);
while(true)
{
cout<<"请输入:";
cin>>choose;
switch(choose)
{
case 1:
printf("请输入入队元素:");
cin>>e;
EnQueue(q,e);
if(q.front != q.rear)
{
printf("队列:");
for(QueuePtr i=q.front->next;i!=q.rear->next;i=i->next)
printf("%d ",i->data);
}
printf("\n");
break;
case 2:
if(q.front == q.rear)
printf("队列为空!\n");
else
{
DeQueue(q,e);
printf("出队元素是 %d\n",e);
}
if(q.front != q.rear)
{
printf("队列:");
for(QueuePtr i=q.front->next;i!=q.rear->next;i=i->next)
printf("%d ",i->data);
}
printf("\n");
break;
case 3:
e=GetHead(q);
printf("队首元素是:%d\n",e);
break;
case 4:
menu();
break;
case 0:
k=1;
break;
}
if(k) break;
}
return 0;
}