2023年c语言循环队列的实现 c语言循环语句示例汇聚
【导读预览】此篇优秀范文“2023年c语言循环队列的实现 c语言循环语句示例汇聚”由阿拉题库网友为您整理分享,以供您参考学习之用,希望此篇资料对您有所帮助,喜欢就复制下载支持吧!
c语言循环队列的实现 c语言循环语句示例篇1
1.概述:
c语言的队列(queue),是先进先出(fifo, first-in-first-out)的线性表数据结构。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。
循环队列可以更简单的防止伪溢出的发生,但是队列大小是固定的。
2.实例代码:
/* 队列的顺序存储结构(循环队列) */#define max_qsize 5 /* 最大队列长度+1 */typedef struct{ qelemtype *base; /* 初始化的动态分配存储空间 */ int front; /* 头指针,若队列不空,指向队列头元素 */ int rear; /* 尾指针,若队列不空,指向队列尾元素的下一个位置 */}sqqueue;/* 循环队列的基本操作(9个) */void initqueue(sqqueue *q){ /* 构造一个空队列q */ q->base=malloc(max_qsize*sizeof(qelemtype)); if(!q->base) /* 存储分配失败 */ exit(overflow); q->front=q->rear=0;}void destroyqueue(sqqueue *q){ /* 销毁队列q,q不再存在 */ if(q->base) free(q->base); q->base=null; q->front=q->rear=0;}void clearqueue(sqqueue *q){ /* 将q清为空队列 */ q->front=q->rear=0;}status queueempty(sqqueue q){ /* 若队列q为空队列,则返回true;否则返回false */ if(==) /* 队列空的标志 */ return true; else return false;}int queuelength(sqqueue q){ /* 返回q的元素个数,即队列的'长度 */ return(+max_qsize)%max_qsize;}status gethead(sqqueue q,qelemtype *e){ /* 若队列不空,则用e返回q的队头元素,并返回ok;否则返回error */ if(==) /* 队列空 */ return error; *e=[]; return ok;}status enqueue(sqqueue *q,qelemtype e){ /* 插入元素e为q的新的队尾元素 */ if((q->rear+1)%max_qsize==q->front) /* 队列满 */ return error; q->base[q->rear]=e; q->rear=(q->rear+1)%max_qsize; return ok;}status dequeue(sqqueue *q,qelemtype *e){ /* 若队列不空,则删除q的队头元素,用e返回其值,并返回ok;否则返回error */ if(q->front==q->rear) /* 队列空 */ return error; *e=q->base[q->front]; q->front=(q->front+1)%max_qsize; return ok;}void queuetraverse(sqqueue q,void(*vi)(qelemtype)){ /* 从队头到队尾依次对队列q中每个元素调用函数vi() */ int i; i=; while(i!=) { vi([i]); i=(i+1)%max_qsize; } printf("n");}
s("content_relate");c语言循环队列的表示与实例详解相关文章:
1.
c语言栈的表示与实现实例详解分析
2.c语言for循环
3.php语言redis队列操作实例
4.c语言跳出循环
5.c语言奇偶排序算法详解及实例代码
6.c语言文件操作解析详解及实例代码
7.c语言for循环的使用
8.c语言数组与指针详解