顺序队列及运算实现
2013-01-27 21:28
232 查看
队列的顺序存储结构实现称作顺序队列。与顺序表一样,顺序队列也是用一维数组来存储其数据元素的。由于队列中数据元素的变化,其队头和队尾位置也随之变化,故需要设两个指针分别指向当前的队头和队尾位置;为了方便运算,通常约定队尾指针rear指向当前队尾元素的实际位置,而队头指针front指向当前队头元素实际位置的前一个位置。
顺序队列的类型定义如下:
需要说明的是,顺序队列的常用形式就是循环队列,循环队列的元素个数(即队列长度)为(q->rear-q->front+MAXSIZE)%MAXSIZE。循环队列的基本运算算法可描述如下:
1.初始化算法
2.入队列算法
3.出队列算法
4.读队头元素
5.判队列空算法
顺序队列的类型定义如下:
typedef struct { elemtype queue[MAXSIZE]; int front,rear; }sequeue; sequeue *q;
需要说明的是,顺序队列的常用形式就是循环队列,循环队列的元素个数(即队列长度)为(q->rear-q->front+MAXSIZE)%MAXSIZE。循环队列的基本运算算法可描述如下:
1.初始化算法
void iniqueue(sequeue *q) { q->front=0; q->rear=0; }
2.入队列算法
int addqueue(sequeue *q,elemtype x)//把元素x插入队列q之中 { if((q->rear+1)%MAXSIZE==q->front)//队列已满无法插入返回0 return 0; else { q->rear=(q->rear+1)%MAXSIZE;//修改队尾指针 q->queue[q->rear]=x;//元素x插入队尾 return 1;//返回插入成功标志1 } }
3.出队列算法
elemtype outqueue(sequeue *q) { if(q->rear==q->front)//队列为空返回NULL return NULL; else { q->front=(q->front+1)%MAXSIZE;//修改队头指针 return q->queue[q->front];//返回队头元素的值 } }
4.读队头元素
elemtype getqueue(sequeue *q) { if(q->rear==q->front)//队列为空返回NULL return NULL; else return q->queue[(q->front+1)%MAXSIZE];//返回队头元素的值 }
5.判队列空算法
int empty(sequeue *q) { if(q->front==q->rear) return 1; else return 0; }
相关文章推荐
- 编写一个程序,实现顺序环形队列的各种基本运算。
- 实现顺序队列各种基本运算的算法
- 实现环形队列各种基本运算的算法(用顺序结构)
- 实现顺序队列各种基本运算的算法
- 编写一个一个程序实现顺序环形队列各项基本运算(假设队列基本元素类型为Char)
- 队列的顺序存储和实现
- c语言实现顺序表的插入,删除和求给定元素在表中的位序等运算
- Java数据结构与算法之顺序表和链表实现栈和队列
- C语言数据结构-顺序队列-数组实现
- 顺序循环队列C++实现2倍扩容版本
- 循环队列的顺序存储实现
- 顺序队列的表示和实现
- 数据结构与算法-----队列-使用数组(顺序结构)实现
- Java用数组实现顺序队列
- 迎接2012之集合和泛型(5)------队列的顺序结构基本实现
- JAVA数据结构之顺序队列的实现
- 实现顺序栈各种基本运算的算法
- java使用数组实现顺序队列
- 循环队列 顺序存储 C实现
- c++ queue 顺序队列的实现