队列的C语言实现(循环数组结构)
2016-07-06 22:46
731 查看
//队列的C语言实现(循环数组结构) #include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ typedef int ElementType; //队列结构 typedef struct _QUEUE_ARRAY_{ int front; int rear; int maxSize; int capacity; ElementType *array; }QUEUE_ARRAY; //创建队列并初始化 QUEUE_ARRAY *Create(int max){ QUEUE_ARRAY *queue; queue=(QUEUE_ARRAY*)malloc(sizeof(QUEUE_ARRAY)); queue->array=(ElementType*)malloc(sizeof(ElementType)*max); if(queue->array==NULL){ printf("内存出错!"); exit(-1); } else{ queue->front=0; queue->rear=0; queue->maxSize=max; queue->capacity=0; return queue; } } //入队 void Enqueue(QUEUE_ARRAY *queue,ElementType data){ if(queue->capacity==queue->maxSize){ printf("队列已满!\n"); exit(-1); } else{ if(queue->capacity==0){ queue->array[queue->rear]=data; } else{ queue->rear=(++queue->rear)%queue->maxSize; queue->array[queue->rear]=data; } queue->capacity++; } } //出队 void Dequeue(QUEUE_ARRAY *queue,ElementType *data){ if(queue->capacity==0){ printf("队列为空!\n"); exit(-1); } else{ *data=queue->array[queue->front]; queue->front=(++queue->front)%queue->maxSize; queue->capacity--; } } //打印队列 void Printf(QUEUE_ARRAY *queue){ if(queue->capacity==0){ printf("队列为空!\n"); exit(-1); } else{ printf("the capacity of queue is : %d \n",queue->capacity); do{ printf(" %d ",queue->array[queue->front]); queue->front++; } while(--queue->capacity); } } int main(int argc, char *argv[]) { QUEUE_ARRAY *queue=Create(10); Enqueue(queue,5); Enqueue(queue,2); Enqueue(queue,3); Enqueue(queue,4); Printf(queue); return 0; }
相关文章推荐
- C#线程队列用法实例分析
- 算法系列15天速成 第九天 队列
- C语言单链队列的表示与实现实例详解
- mysql 队列 实现并发读
- C#队列Queue用法实例分析
- C#多线程处理多个队列数据的方法
- C语言循环队列的表示与实现实例详解
- C++循环队列实现模型
- C#内置队列类Queue用法实例
- Array栈方法和队列方法的特点说明
- C#通过链表实现队列的方法
- C#队列Queue多线程用法实例
- C#数据结构与算法揭秘五 栈和队列
- C++中队列的建立与操作详细解析
- PHP实现的memcache环形队列类实例
- php基于双向循环队列实现历史记录的前进后退等功能
- 队列在编程中的实际应用(php)
- Go语言的队列和堆栈实现方法
- C++队列用法实例
- PHP队列用法实例