用C语言实现简单循环队列结构
2011-06-12 20:58
639 查看
/* *用C实现简单循环队列结构 * *循环队列的类型定义如下: *typedef struct{ * valuetype data[MAXSIZE]; [>数据的存储区<] * int font, rear; [>队首队尾<] * int num; [>队列中元素的个数<] *}Circular_Queue; *循环队列常用函数如下: *(1)Circular_Queue * Init_CirQueue(): 初始化队列 *(2)int In_CirQueue(Circular_Queue *q, valuetype x): 将元素x插入队列q的队尾,若成功返回1,否则返回0 *(3)int Out_CirQueue(Circular_Queue *q, valuetype *x): 取出队列q队首位置的元素,若成功返回1,否则返回0 */ /*程序代码:*/ #include <stdio.h> #include <malloc.h> #define MAXSIZE 100 typedef int valuetype; typedef struct{ valuetype data[MAXSIZE]; /*数据的存储区*/ int font, rear; /*队首队尾*/ int num; /*队列中元素的个数*/ }Circular_Queue; Circular_Queue * Init_CirQueue() { Circular_Queue *q = (Circular_Queue*)malloc(sizeof(Circular_Queue)); q->font = q->rear = MAXSIZE-1; q->num = 0; return q; } int In_CirQueue(Circular_Queue *q, valuetype x) { if(q->num == MAXSIZE) return 0; /*队满,不能入队*/ else { /*q->rear = (q->rear+1)%MAXSIZE;*/ q->data[q->rear] = x; q->rear = (q->rear+1)%MAXSIZE; q->num++; return 1; } } int Out_CirQueue(Circular_Queue *q, valuetype *x) { if(q->num == 0) return 0; /*队空*/ else{ *x = q->data[q->font]; q->font = (q->font+1)%MAXSIZE; q->num--; return 1; } } int main() { Circular_Queue *queue = Init_CirQueue(); int x=0; for(int i=0;i<10;++i) { if(!In_CirQueue(queue, i)) break; } while(Out_CirQueue(queue, &x)) printf("%d ",x); printf("/n"); return 0; }
相关文章推荐
- CycleQueue--循环队列(c语言简单实现)
- 数据结构.循环队列(C语言实现)
- 队列的C语言实现(循环数组结构)
- 用C语言实现简单链式队列结构
- 数据结构之循环队列c语言实现
- 数据结构之---C语言实现循环队列
- 数据结构基础(5)--C语言实现循环队列--静态
- c语言用简单数组实现循环队列
- 五、数据结构基础之循环队列C语言实现
- 数据结构基础之循环队列C语言实现
- C实现简单循环队列
- 循环队列的综合操作(出入队、获取队长度)C语言实现
- 数据结构基础——循环队列的C++实现
- 简单数据结构实现——队列
- 六、数据结构基础之链队列C语言实现
- 数据结构基础(7) --循环队列的设计与实现
- 循环队列的c语言实现
- 10月3日 c语言简单循环结构 求1+2+3+……+100=?
- [数据结构]单链表C语言的简单实现
- 数据结构:循环队列(C语言实现)