循环队列数组实现(c语言)

示意图

#include<stdio.h>
#include <stdlib.h>
#define MaxSize 10

//数组方式实现队列,出队时,实际上不能删除数组中的元素,只是改变front,rear的值,仍然占用空间
//循环队列,数组第一个空间不放值


typedef struct Queue
{
	int data[MaxSize];
	int front;
	int rear;
 }Queue,*PQueue;


 void add(PQueue q,int item)
 {
 	if((q->rear+1)%MaxSize == q->front)
 	{
 		printf("队列满\n");
	 }
	 else
	 {
	 	q->rear = (q->rear+1)%MaxSize;
	 	q->data[q->rear] = item;
        printf("%d已入队\n",item);
	 }
 }

 void traversal(PQueue q)
 {
     int i = q->front+1;
     int j = q->rear;
    for(i;i<j;i++)
     {
         printf("%d\n",q->data[i]);
     }
 }

 void del(PQueue q)
 {
 	if(q->front == q->rear)
 	{
 		printf("队列空\n");
	 }
	 else
	 {
	 	q->front = (q->front+1)%MaxSize;
	 	printf("%d已出队\n",q->data[q->front]) ;
	 }
 }

 void init(PQueue q)
 {
 	q->front = 0;
 	q->rear = 0;
 }

 int main()
 {
 	PQueue q;
 	q = (PQueue)malloc(sizeof(Queue));
 	init(q);


 	add(q,1);
 	add(q,2);
 	add(q,3);
 	add(q,4);
 	add(q,5);
 	add(q,6);
 	add(q,7);

 	add(q,8);
 	add(q,9);
 	add(q,10);
 	traversal(q);
 	del(q);
 	del(q);

 	traversal(q);
 	return 0;
 }


有问题,欢迎评论区一起讨论

本人Hexo博客地址:https://qietingfengyindiary.github.io/


版权声明:本文为weixin_44643488原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。