简单的循环队列

 

#include<stdio.h>
#include<malloc.h>
#define max 10
typedef struct node
{
int queue[max];
int front,rear;
}q,*queue;
void init(queue p)
{
p->front=-1;
p->rear=-1;
}

int empty(queue p)
{
if(p->front==p->rear)
{
printf("队列为空 ");
return 1;
}
else
{
return 0;
}
}

int insert(queue p,int x)
{
if((p->rear+1)%max==p->front)
{
printf("队列已满 ");
}
else
{
p->rear=(p->rear+1)%max;
p->queue[p->rear]=x;
}
return 1;
}


int del(queue p,int *n)
{
if(p->front==p->rear)
{
printf("队列已空 ");
}
else
{
p->front=(p->front+1)%max;
*n=p->queue[p->front];
printf("被删除元素:%d ",*n);
printf(" ");
}
return 1;
}

void tra(queue p)
{
for(int i=p->front+1;i<p->rear+1;i++)//循环队列front与rear不等于-1;(圆圈从一开始)
{
printf("%d ",p->queue[i%max]);
}
}

int main()
{//动态内存,所以指针指向数组的内存没有执行立即被分配
queue l;int n;
l=(queue)malloc(sizeof(q));
init(l);
insert(l,1);
insert(l,2);
insert(l,3);
insert(l,4);
insert(l,5);
tra(l);
printf(" ");
empty(l);
del(l,&n);
tra(l);


}

原文地址:https://www.cnblogs.com/mykonons/p/5870465.html