2024年c语言循环队列的实现 c语言循环语句示例汇总

每个人都曾试图在平淡的学习、工作和生活中写一篇文章。写作是培养人的观察、联想、想象、思维和记忆的重要手段。大家想知道怎么样才能写一篇比较优质的范文吗?下面我给大家整理了一些优秀范文,希望能够帮助到大家,我们一起来看一看吧。

c语言循环队列的实现 c语言循环语句示例篇一

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语言数组与指针详解

声明:准根文档网所有作品(图片、文字)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系 saizw@outlook.com