循环队列的表示和实现定义
用一组地址连续的存储单元依次存放从队头到队尾的元素。还需要附设两个整型变量:front指示队头元素的位置,rear指示队尾元素的下一个位置
算法const int MAXSIZE=128;
typedef struct Squeue{
Elemtype elem[MAXSIZE];
int front;
int rear;
}Squeue;
队列的基本形态...
分类:
其他好文 时间:
2015-05-10 17:20:36
阅读次数:
125
顺序链表代码 非常简单;但这个代码会有假溢出的状况出现;就是在队尾已满的情况下,不断出队后若在此时进行入队操作 判断队列已满的条件是q->head==q->tail 此时这个条件满足。 但实际队列之前已经出队了好几个,前面还有空余空间,这就是假溢出;(原谅我懒得画图)假溢出解决办法1.每次出队后 把...
分类:
编程语言 时间:
2015-04-21 00:12:12
阅读次数:
224
/*
* 2015年4月17日 09:07:17
* 目的:实现循环队列(顺序存储结构),本来我想要在实现循环队列之前
* 先实现队列的顺序存储,但是这种算法有很大的缺点
* 首先会造成假溢出现象
*/
/*
* 解决队列的相关问题,就是怎么判断队列是否满了或者空了
* 第一种方法:
* 我们在队满和对空时都是real = front;这样就不够具体,容易出错
* 所以我们采取牺...
分类:
其他好文 时间:
2015-04-17 11:24:32
阅读次数:
158
循环队列的基本结构如下:
front 属性 表示 队头,rear 属性表示 队尾。
在队空时 :q.rear 和 q.front 都为0 ,其余时刻q.rear 指向 队尾的后继节点,q.front指向 队头.
当在队尾插入元素时,q.rear + 1 ,在删除 队头元素时 ,q.front + 1,这样的操作 会造成 “假溢出”问题。
图(d) 就是一种 假溢出 问题,q.rea...
分类:
其他好文 时间:
2015-03-06 16:03:43
阅读次数:
185
//1.队列顺序结构的定义
#define MAXQSIZE 100
typedef struct
{
QElemType base[MAXQSIZE];//静态数组
int front;//队列头指针
int rear;//队列尾指针
}SqQueue;
//解决队列的假溢出方法
//1.将循序列队臆造为一个环状空间。尾指针指向头指针
//2.在对满的情况下,rear指针和front...
分类:
其他好文 时间:
2015-01-31 19:27:25
阅读次数:
319
队列 队列简称队, 也是一种操作受限的线性表, 只允许在表的一端进行插入, 而在表的另一端进行删除.其特点为”先进先出(FIFO)”,故又称为先进先出的线性表,简单队列如图所示: 循环队列 顺序队列有一个先天不足, 那就是空间利用率不高, 会产生”假溢出”现象,即:其实队列中还有空闲的空间以存储元素, 但我们在判断队列是否还有空间时, 队列告诉我们队列已经满了, 因此这种溢出并不是真正...
分类:
其他好文 时间:
2015-01-03 21:05:15
阅读次数:
257
//CycQueue.h
/*
Queue:First In First Out (FIFO)
避免假溢出:使用循环队列。
*/
#define QUEUEMAX 20
//1.定义队列结构
typedef struct
{
DATA data[QUEUEMAX]; //队列数组
int head; //队头
int tail; //队尾
}CycQueue;
/...
分类:
其他好文 时间:
2014-12-09 15:46:05
阅读次数:
270
利用线性表实现队列,为了有效利用空间,将其设计为循环结构,防止假溢出;牺牲一个存储单元以区分队空、队满。
设front队头,rear队尾,N为顺序表大小
队空:rear==front
队满:(rear+1)%N==front
#include
#define Elemtype int
#define N 100
struct Queue
{
Elemtype data[N];
int ...
分类:
其他好文 时间:
2014-10-11 01:38:34
阅读次数:
360
为了能充分的利用空间,解决顺序队列的“假溢出”问题,可以采用两种方法:一种是将数据向前移动,让空的存储单元留在队尾;另一种是将顺序队列构造成一个环状的空间,即将队列的数据区data[0....MAXSIZE-1]看成头尾相接的循环结构,使得data[0]接在data[MAXSIZE-1]之后,这就是循环队列。
这节就来实现循环顺序队列。
循环队...
分类:
其他好文 时间:
2014-09-21 18:28:11
阅读次数:
334
循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件front==rear来判别队列是"空"还是"满"。解决这个问题的方法至少有三种:① 另设一布尔变量以区别队列的空和满;② 少用一个元素的空间。约定入队前,测试尾指针在循环意义下...
分类:
其他好文 时间:
2014-08-30 21:40:40
阅读次数:
419