#include <stdio.h>
#include <stdlib.h>
//#include <iostream>
#define MAXSIZE 100
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0
//using namespace std;
typedef struct
{
int data[MAXSIZE];
int front; // 头指针
int rear; //尾指针
}SqQueue;
int initQueue(SqQueue &Q);//初始化队列
int ClearQueue(SqQueue &Q);//清空队列
int QueueEmpty(SqQueue Q);//判断队空
int QueueLength(SqQueue Q);//取队列长度
int GetheadQueue(SqQueue Q,int &e);//取队列对头元素
int InQueue(SqQueue &Q,int x);//入队操作
int DeQueue(SqQueue &Q);//出队操作
int QueueTraverse(SqQueue Q);//遍历队列
int main()
{
printf("Hello World!
");
SqQueue Q;
int m;
int i,leng;
int kk,flag;
initQueue(Q);
printf("入队顺序:
");
for(i=1;i<=10;i++)
{
InQueue(Q,i);//入队
printf("%d ",i);
}
printf("
");
flag=QueueEmpty(Q);
leng=QueueLength(Q);
if(flag==1)
printf("队列空,队列长度为: 0
");
else
printf("队列不空,队列长度为:%d
",leng);
QueueTraverse(Q);//遍历队列
flag=QueueEmpty(Q);
leng=QueueLength(Q);
if(flag==1)
printf("队列空,队列长度为: 0
");
else
printf("队列不空,队列长度为:%d
",leng);
GetheadQueue(Q,m);
printf("队列顶部元素为:%d
",m);
for(i=0;i<10;i++)
{
kk=DeQueue(Q);
printf("%d ",kk);//出队
}
ClearQueue(Q);
printf("
");
flag=QueueEmpty(Q);
leng=QueueLength(Q);
if(flag==1)
printf("队列空,队列长度为: 0
");
else
printf("队列不空,队列长度为:%d
",leng);
return 0;
}
int initQueue(SqQueue &Q)//初始化队列
{
Q.front=0;
Q.rear=0;
return OK;
}
int ClearQueue(SqQueue &Q)//清空队列
{
Q.front=Q.rear=0;
return OK;
}
int QueueEmpty(SqQueue Q)//判断队空
{
if(Q.front==Q.rear)
return TRUE;
else
return FALSE;
}
int QueueLength(SqQueue Q)//取队列长度
{
return(Q.rear-Q.front+MAXSIZE)%MAXSIZE;
}
int GetheadQueue(SqQueue Q,int &e)//取队列对头元素
{
if(Q.front==Q.rear)
return ERROR;
e=Q.data[Q.front];
return OK;
}
int InQueue(SqQueue &Q,int x)//入队操作
{
if(Q.front==MAXSIZE)
printf("溢出!
");
else
{
Q.data[Q.rear]=x;
(Q.rear)++;
}
return 1;
}
int DeQueue(SqQueue &Q)//出队操作
{
int x;
if(Q.front==Q.rear)
printf("下溢出!
");
else
{
x=Q.data[Q.front];
(Q.front)++; //front指针后移
}
return x;
}
int QueueTraverse(SqQueue Q)//遍历队列
{
int i;
i=Q.front;
while(i!=Q.rear)
{
printf("%d ",Q.data[i]);
i=(i+1)%MAXSIZE;
}
printf("
");
return OK;
}