首页 > 学院 > 开发设计 > 正文

队列(一)循环队列的线性存储

2019-11-06 09:01:01
字体:
来源:转载
供稿:网友
#include<stdio.h>#define false 0#define ok 1#define maxsize 5//定义一个队列结构typedef struct sQQueue{ int data[maxsize]; int front,rear;}sqqueue;//建立一个空队列void initqueue(sqqueue *l){ l->front = 0; l->rear = 0;}//向队列插入元素int inqueue(sqqueue *l, int e){ if ((l->rear + 1) % maxsize == l->front) return false; l->data[l->rear] = e; l->rear = (l->rear + 1) % maxsize; return ok;}//从队列出元素int outqueue(sqqueue *l, int *e){ if (l->rear == l->front) return false; *e = l->data[l->front]; l->front=(l->front + 1) % maxsize; return ok;}//查看队列所有元素void seequeue(sqqueue l){ while (l.rear!= l.front) { PRintf("%4d", l.data[l.front]); l.front = (l.front + 1) % maxsize; }}int main(void){ int i,a=0; sqqueue s; initqueue(&s); for(i=1;i<maxsize;i++) inqueue(&s, i); seequeue(s); for (i = 1; i < maxsize - 1; i++) { outqueue(&s, &a); printf("a=%d", a); } inqueue(&s, 5); inqueue(&s, 6); seequeue(s); return 0;}

队列由数据,头,尾组成,循环队列节省了空间。 循环队列空:front==rear 循环队列满:(rear+1)%maxsize==front


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表