数据结构之循环队列

来源:互联网 发布:wap淘宝是什么访客 编辑:程序博客网 时间:2024/05/22 11:36

数据结构之循环队列。
压入元素:
rear=(rear+1)%maxsize;
删除元素:
front=(front+1)%maxsize;
判断队空:
front==rear;
判断队满:
front==(rear+1)%maxsize;
队中元素的个数:
num=(rear-front+maxsize)%maxsize;

代码:

#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#define maxsize 20#define ElemType inttypedef struct{    ElemType linklist[maxsize];    int rear;    int front;}list;list s;//--------------------向队列中压入元素----------------void enElem(list* l,int x ){    if(l->front==(l->rear+1)%maxsize)    {        printf("链表已满!\n");        exit(0);    }    l->linklist[l->rear]=x;    l->rear=(l->rear+1)%maxsize;}//--------------------删除队列中的元素----------------int deElem(list* l){    if(l->front==l->rear)    {        printf("空队列不能删除元素!\n");        exit(0);    }    int x=0;    x=l->linklist[l->front];    l->front=(l->front+1)%maxsize;    //printf("%d ",l->front);    return x;}//-------------------判断循环队列中的个数--------------int GetNumber(list* l){    int x=0;    x=(l->rear-l->front+maxsize)%maxsize;    return x;}void print(list* l){    int i=0;    for(i=0;i<maxsize;i++)    {        printf("%d ",l->linklist[i]);    }    printf("\n");}int main(){     s.front=0;     s.rear=0;     int i=0;     printf("填满循环队列\n");     for(i=1;i<maxsize;i++)        enElem(&s,i);     print(&s);     int j=0;     j=GetNumber(&s);     printf("当前循环队列中的元素个数为%d.\n",j);     printf("删除一次队列中元素\n");     i=deElem(&s);     printf("删除了队列元素%d.\n",i);     j=GetNumber(&s);     printf("当前循环队列中的元素个数为%d.\n",j);}

运行结果:
这里写图片描述

原创粉丝点击