数据结构之循环队列
2017-10-30 22:58
225 查看
数据结构之循环队列。
压入元素:
rear=(rear+1)%maxsize;
删除元素:
front=(front+1)%maxsize;
判断队空:
front==rear;
判断队满:
front==(rear+1)%maxsize;
队中元素的个数:
num=(rear-front+maxsize)%maxsize;
代码:
运行结果:
压入元素:
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 int typedef 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); }
运行结果:
相关文章推荐
- 一步一步学数据结构之1--1(队列--线性表实现--不存在循环)
- 数据结构基础(5)--队列和循环队列详解--静态方式
- 经典的数据结构——循环队列
- 九度 1415 不一样的循环队列 【数据结构】
- 循环队列实现杨辉三角及数据结构
- [数据结构]队列实现、循环队列的不同实现
- 数据结构:循环队列(C语言实现)
- 数据结构Java实现——②队列--->队列的“奇葩”一循环顺序队列
- 算法与数据结构【四】——C语言实现循环队列
- 算法与数据结构 其四 循环队列的实现
- 一步一步学数据结构之1--1(循环队列--线性表实现)
- 数据结构 -- 队列 & 循环队列 -- 数组实现
- Java数据结构之循环队列简单定义与用法示例
- 数据结构--循环队列
- 【c++版数据结构】之循环队列的实现
- 第三章 队列【数据结构】【链队列】【循环队列】
- 循环队列 C语言数据结构
- 数据结构-->(循环)队列 【队列的顺序实现】ADT
- 数据结构(ZKNU OJ)猴子选大王(循环队列解法)
- 数据结构——循环队列的学习