谈到队列,也是一种受限制的线性表,一端插入,一端删除。
#include#include #include #define maxsize 10//队列全局变量maxsize typedef struct group{//队列定义 int data[maxsize]; int front,rear; }group;
简单地定义一个结构体类型;
void start(group *G1)//队列初始化
{
G1->front=0;
G1->rear=0;
}
bool gempty(group *G1)//判断队列是否为空
{
if(G1->front==G1->rear)
return true;
else
return false;
}
队列的初始化,两个储存指针的int类型均定义为0;
bool enter(group *G1,int x)//入队
{
if((G1->rear+1)%maxsize==G1->front)
return false;
G1->data[G1->rear]=x;
G1->rear=(G1->rear+1)%maxsize;
return true;
}
int leave(group *G1,int x)//离队
{
if(G1->front==G1->rear)
exit(1);
x=G1->data[G1->front];
G1->front=(G1->front+1)%maxsize;
return x;
}
入队,离队的操作代码;
int main()
{
struct group L1;
struct group *G1;
G1=&L1;
int m;
start(G1);
if(gempty(G1))
printf("队列为空!n");
else
printf("队列不为空!n");
for(int i=1;i<9;i++)
{
printf("请输入要存入队列的第%d个数据:",i);
scanf("%d",&m);
enter(G1,m);
}
for(int i=1;i<9;i++)
{
printf("队列的第%d个元素为:",i);
m=leave(G1,m);
printf("%d",m);
printf("n");
}
return 0;
}
主体操作代码;利用循环给数据排队,再利用循环进行队列的遍历。
最后的代码运行结果:



