当前位置:文档之家› 循环队列(完整可运行代码)

循环队列(完整可运行代码)

1)顺序循环队列类型定义为:
#define N 20typedef struct
{ int data[N];
int front, rear;
}queue_type;
2)编写循环队列出队函数dequeue
3)编写循环队列入队函数enqueue
4)编写函数:void aa(queue_type *q);
调用出对函数把队列q中的元素一一出对列,如果是负数直接抛弃;如果是正数,则调用入
队函数,插入到q的队尾。5)编写main函数,首先建立一个队列,其中的数据元素为:{2,
3, -4, 6, -5, 8, -9, 7, -10, 20};然后调用aa函数,并将aa函数调用前后队列的数据元素分别
输出到屏幕上。

#include
#define N 20
typedef int elemtype;
int count;

typedef struct queue_type
{ elemtype data[N];
int front;
int rear;
}queue_type;

void initqueue(queue_type *q)
{
q->front=q->rear=0;
return;
}

int enqueue(queue_type *q,elemtype x)
{
if((q->rear+1) % N == q->front)
return 0;
else
{
q->rear=(q->rear+1)%N;
q->data[q->rear]=x;

return(true);
}
}

int dequeue(queue_type *q,elemtype *x)
{
if(q->rear == q->front)
return(NULL);
else
{
q->front=(q->front+1) % N;
*x=q->data[q->front];
}
return 0;
}

void aa(queue_type *q)
{
int i;
q->front=0;
q->rear=count;
i=count;
elemtype out;
while(i--)
{
dequeue(q,&out);
count--;
if(out>0)
{
enqueue(q,out);
count++;
}
}
}

int main()
{
elemtype x,temp;
int i,j,k;
queue_type Q;
initqueue(&Q);
printf("Now, let's make a stack! Please input the number:\n");
scanf("%d",&count);
i=count;
printf("Please input the data:\n");
scanf("%d",&x);
while(--i)
{
enqueue(&Q,x);
scanf("%d",&x);
}
enqueue(&Q,x);
j=count;
while(j--)
{
dequeue(&Q,&temp);
printf("%d ",temp);
}
aa(&Q);
k=count;
printf("\nQueue After 'aa':\n");
while(k--)
{
dequeue(&Q,&temp);
printf("%d ",temp);
}
return 0;
}

相关主题