数据结构:队列(循环数组实现)
2013-02-23 23:26
645 查看
#include<stdio.h> #include<stdlib.h> #define ElementType int #define MAXSIZE 10 //队列的循环数组实现方式 typedef struct QueueRecord{ int Front; int Rear; int Size; ElementType Array[MAXSIZE]; }Queue; static Queue *q; void InitialQueue(); int IsEmpty(); int IsFull(); void MakeEmpty(); void Enqueue(ElementType); ElementType Dequeue(); void error(char *); void InitialQueue(){ int i; q=(Queue *)malloc(sizeof(Queue)); q->Front = 0; q->Rear = -1; q->Size = 0; for(i=0;i<MAXSIZE;i++){ q->Array[i]=0; } } int IsEmpty(){ if(q->Size == 0){ return 1; } return 0; } int IsFull(){ if(q->Size == MAXSIZE){ return 1; } return 0; } void MakeEmpty(){ q->Front = 0; q->Rear = -1; q->Size = 0; } void Enqueue(ElementType e){ if(IsFull()){ error("queue has been full"); return; } if(q->Rear < 9){ q->Rear++; } else{ q->Rear =0; } q->Array[q->Rear]=e; q->Size ++; } ElementType Dequeue(){ ElementType e; if(IsEmpty()){ error("queue has been empty"); return 0; } q->Size--; e = q->Array[q->Front]; if(q->Front == 9){ q->Front = 0; } else{ q->Front++; } return e; } void error(char *c){ printf("%s",c); } void main(){ int i; InitialQueue(); //测试代码 for(i=0;i<10;i++){ Enqueue(i); } Dequeue(); Enqueue(2); for(i=0;i<10;i++){ printf("%d",Dequeue()); } }
相关文章推荐
- 数据结构循环队列,数组实现,循环队列中如果不使用数据项计数字段items,而是通过front和rear计算队列是否为空或满或队列个数,那会很复杂
- 数据结构(一) -- 循环队列数组实现
- 数据结构循环队列——数组模拟实现
- 【C++数据结构】数组循环队列的实现
- 数据结构-循环数组实现队列
- 数据结构 -- 队列 & 循环队列 -- 数组实现
- 数据结构(java语言描述)-- 队列的循环数组实现
- 数据结构之循环数组实现队列
- 数据结构之——基于数组实现的循环队列
- 数据结构(22)循环队列--线性表实现
- 数据结构之数组实现队列
- 数据结构:循环队列(C语言实现)
- 数据结构-循环队列的基本实现操作
- java实现数据结构-数组中按次数进行循环右移
- c语言数据结构实现-数组队列/环形队列
- 使用JavaScript的数组实现数据结构中的队列与堆栈
- 用数组实现循环队列
- 基于链表、数组实现队列、循环队列
- STL之顺序容器适配器(队列的循环数组实现)
- 使用JavaScript的数组实现数据结构中的队列与堆栈