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

来源:互联网 发布:c语言disc是什么意思 编辑:程序博客网 时间:2024/06/08 09:10
#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

0 0
原创粉丝点击