文档介绍://进队出队操作时自动判断队空队满
#include<>
#include<>
#define MAXSIZE 1000
typedef struct//顺序队列定义
{
int data[MAXSIZE];//队员的存储空间
int front,rear;//队头、队尾指针
} SeQueue;
SeQueue *sq;
int createsq()//顺序队列的建立
{
int n,x,i;
sq=(SeQueue*)malloc(sizeof(SeQueue));
sq->front=sq->rear=-1;
printf("请输入要建立的顺序队列元素个数:");
scanf("%d",&n);
printf("请输入数据元素:");
for(i=0; i<n; i++)
{
scanf("%d",&x);
sq->data[i]=x;
sq->rear++;
}
return 0;
}
int putsq()//顺序队列的输出
{
int i;
printf("顺序队列输出为:");
for(i=sq->front+1; i<=sq->rear; i++)
printf("%d ",sq->data[i]);
printf("\n");
return 0;
}
int emptysq()//判断队空(顺序队列)
{
if(sq->front==sq->rear)
return 1;
else
return 0;
}
int fullsq()//判断队满(顺序队列)
{
if(sq->rear+1==MAXSIZE)
return 1;
else
return 0;
}
int insq()//入队(顺序队列)
{
int x;
if(fullsq())
printf("队满!\n");
else
{
printf("请输入入队元素:");
scanf("%d",&x);
sq->data[++sq->rear]=x;
}
return 0;
}
int outsq()//出队(顺序队列)
{
int x;
if(emptysq())
printf("队空!\n");
else
{
x=sq->data[++sq->front];
printf("队头元素%d已出队\n",x);
}
return 0;
}
typedef struct node//链队列结点定义
{
int data;
struct node *next;
} QNode;
typedef struct//将链队列头尾指针封装在一起
{
QNode *front;
QNode *rear;
} LQueue;
LQueue *q;
int createlq()//创建带头节点的链队列
{
int i,n;
QNode *p;
q=(LQueue*)malloc(sizeof(LQueue));
p=(QNode*)malloc(sizeof(QNode));