数据结构:用数组实现的定容队列
2015-01-16 08:31
721 查看
#ifndef SQ_QUEUE_HEAD #define SQ_QUEUE_HEAD #include <stdio.h> #define Status int #define OVERFLOW -1 #define OK 0 #define ERROR 1 #define QUEUE_INIT_SIZE 10 typedef int ElemType; typedef struct { ElemType data[QUEUE_INIT_SIZE]; int front;//头指针,指向第一个元素 int rear;//尾指针,指向下一个可分配的单元 int size;//已分配的容量 } SqQueue; Status init(SqQueue *q) { q->front = 0; q->rear = 0; q->size = QUEUE_INIT_SIZE; return OK; } Status destroy(SqQueue *q) { q->front = 0; q->rear = 0; return OK; } Status push(SqQueue *q, ElemType e) { //队列满 if ((q->rear + 1) % q->size == q->front) return OVERFLOW; //将e写入尾指针指向的单元,然后尾指针后移 q->data[q->rear++] = e; //如果向后溢出则移到0号单元 if (q->rear == q->size) q->rear = 0; return OK; } Status pop(SqQueue *q, ElemType *e) { //队列空 if (q->rear == q->front) return OVERFLOW; //获取front指针指向的单元的值,然后front后移 *e = q->data[q->front++]; //将已出队的单元置0 q->data[q->front-1] = 0; //如果frong指针溢出则移到0号单元 if (q->front == q->size) q->front = 0; return OK; }
相关文章推荐
- 数据结构与算法-----队列-使用数组(顺序结构)实现
- 用数组实现js中的堆栈 或者队列数据结构
- 数据结构之用数组和链表实现队列
- 数据结构与实现——数组、矩阵、链表、队列、栈、对象、二叉树和红黑树
- 学会一种数据结构二:队列的数组实现和链表实现
- 【数据结构与算法基础】以数组实现的循环队列 / Circular Queue implemented by array
- 经典数据结构之数组实现的队列
- 数据结构之数组实现基础队列结构
- 简单数据结构实现——队列
- VB.NET用Marshal.PtrToStructure 方法实现数据在数组和结构间复制
- Java之美[从菜鸟到高手演变]之数据结构基础、线性表、栈和队列、数组和字符串
- 数组的顺序存储表示和实现-数据结构
- 数据结构之优先队列--二叉堆(Java实现)
- 数据结构之stack,queue的数组与链表实现
- 六、数据结构基础之链队列C语言实现
- 数据结构(三)——队列及实现、循环队列实现
- 五、数据结构基础之循环队列C语言实现
- 数据结构:队列的实现
- 数据结构(Data structure):使用双向链表实现队列(C语言)
- Android 开发 数据结构理解 队列和栈 分析及实现