C语言数组实现队列
2013-11-09 20:25
441 查看
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_QUEUE_SIZE 10 typedef struct { unsigned int queue[MAX_QUEUE_SIZE]; int head; int tail; int count; }array_queue; /*初始化队列*/ array_queue* initialize_array_queue() { array_queue* arr_queue = NULL; arr_queue = (array_queue*)malloc(sizeof(array_queue)); memset(arr_queue,0,sizeof(array_queue)); arr_queue->head = MAX_QUEUE_SIZE-1; arr_queue->tail = MAX_QUEUE_SIZE-1; return arr_queue; } /*销毁队列*/ void destroy_array_queue(array_queue* arr_queue) { if(arr_queue != NULL) { free(arr_queue); } return; } /*入队列*/ void in_queue(array_queue* arr_queue,unsigned int value) { if(arr_queue != NULL) { if(arr_queue->count == MAX_QUEUE_SIZE) { return ; } else { arr_queue->tail = (arr_queue->tail+1)%MAX_QUEUE_SIZE; arr_queue->queue[arr_queue->tail] = value; arr_queue->count++; } } } /*出队列*/ unsigned int out_queue(array_queue* arr_queue) { unsigned int value; if(arr_queue != NULL) { if(arr_queue->count == 0) { return -1; } else { arr_queue->head = (arr_queue->head+1)%MAX_QUEUE_SIZE; value = arr_queue->queue[arr_queue->head]; arr_queue->queue[arr_queue->head] = 0; arr_queue->count--; } } } void print_queue(array_queue* arr_queue) { int i = 0; for(i=0;i<MAX_QUEUE_SIZE;i++) { printf("%d,",arr_queue->queue[i]); } printf("\n"); printf("head is %d, tail is %d\n",arr_queue->head,arr_queue->tail); } void main() { array_queue* queue = initialize_array_queue(); in_queue(queue, 5); in_queue(queue, 6); out_queue(queue); print_queue(queue); destroy_array_queue(queue); }
现在队列有点小问题:head指向的并不是表头,(head++)%MAX_QUEUE_SIZE 才是表头
相关文章推荐
- 数据结构与算法分析-用C语言实现队列(数组方式)
- C语言数组实现循环队列
- 使用数组实现队列----《数据结构与算法分析---C语言描述》
- 队列的C语言实现(循环数组结构)
- c语言数组方式实现静态循环队列
- c语言数据结构实现-数组队列/环形队列
- 静态数组实现队列(C语言)
- C语言数据结构-顺序队列-数组实现
- 基于数组的队列实现(C语言) - ahljjun的专栏 - 博客频道 - CSDN.NET
- 队列的数组实现(C语言描述)
- 使用数组实现队列(C语言)
- c语言用简单数组实现循环队列
- 基于数组的队列实现(C语言)
- C语言斐波那契数列的四种实现方式—递归,迭代,数组,队列
- C语言队列动态数组实现
- 数据结构与算法分析—循环队列的数组实现(C语言)
- C语言使用数组实现简单队列
- 面试题之两个栈实现一个队列,乘机数组问题
- (第7讲)利用双向链表实现双端队列、优先级队列(有序数组实现、有序链表实现)
- java 基于数组实现的队列