#include <stdio.h>
#include <stdlib.h>
#define OVERFLOW -1
#define STACK_INIT_SIZE 10
#define STACKINCREMENT 2
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int QElemType;
typedef int Status;
typedef struct QNode
{
QElemType data;
struct QNode *next;
}QNode, *QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
Status InitQueue(LinkQueue &Q) //初始化
{
Q.front=Q.rear=new QNode;
Q.front->next=NULL;
return OK;
}
Status EnQueue(LinkQueue &Q,QElemType e) //入队
{
QueuePtr p;
p=new QNode;
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return OK;
}
Status DeQueue(LinkQueue &Q,QElemType &e) //出队
{
QueuePtr p;
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;
}
QElemType GetHead(LinkQueue Q) //取链队的队头元素
{
if(Q.front!=Q.rear)
return Q.front->next->data;
}
/*
Status QueueTraverse(LinkQueue Q)
{
if(Q.front==Q.rear)
return ERROR;
QueuePtr p;
p = Q.front->next;
while(p!=Q.rear){
printf("%d\n",p->data);
p = p->next;
}
printf("\n");
return OK;
}
*/
int main()
{
QElemType e,m;
LinkQueue Q;
printf("构造一个空队……\n");
InitQueue(Q);
int n;
printf("请输入要入队的个数:");
scanf("%d", &n);
printf("请输入入队元素:");
for(e = 1; e <= n ; e++)
{
scanf("%d", &m);
EnQueue(Q,e);
}
printf("……输出队头元素……\n");
e=GetHead(Q);
printf("队头元素是:\n");
printf("%d\n",e);
printf("……队尾插入元素……\n");
printf("请输入要插入的元素的数值:\n");
scanf("%d",&e);
EnQueue(Q,e);
// printf("现在队中的元素是:\n");
// QueueTraverse(Q);
printf("\n");
printf("……队头删除元素……\n");
printf("删除的元素是:\n");
scanf("%d",&e);
DeQueue(Q, e);
// printf("现在队中的元素是:\n");
// QueueTraverse(Q);
printf("\n");
printf("您已经成功完成所有的功能!!!\n");
return 0;
}