赞
踩
队列是限制在两端进行插入操作和删除操作的线性表,允许进行存入操作的一端称为“队尾”
,允许进行删除操作的一端称为“队头”
。当线性表中没有元素时,称为“空队
”。
特点 ;先进先出(FIFO)。
我们先举一个售票处的例子:有两个栏杆挡着进入窗口进行买票,一个接一个的从栏杆后进去,在栏杆内等待,这起到公平工公正的作用,防止了插队。但是有一个坏处是,如果你尿急但还在栏杆中, 你是不能出去的,只能忍着等到你买完后从护栏前面出去
银行一进来很豪华是吧,没有像这样的弄两个栏杆子,它门口会有一个叫号器,那么这个东西干什么呢?这个东西啊它非常关键也非常重要,对我们来说呢,比售票处要先进一点,或者说对我们每个人来说呢,能够节约我的时间。
你原来你进来是不是要排队啊?你排队这里你在这个在那里面想出去,前面有人想想想从后面出去不行,是不是挡着。现在就不同了,你一进来啊要办理业务,一进来的话,先不管三七二十一,先取个号,取个号的话呢,这个时候你就爱干嘛干嘛了,我们等着。然后呢这边这个工作人员他如果说前面的办理完,办理完业务了没人了,他就会按一下那个有个按钮按一下某某某号,那这时候呢你就可以进去办理业务,那么你在这个时间的话呢,你就不用说是在这儿排队等了,你上厕所不影响
那么注意这个起取号器谁做的里面要不要程序呢?需要的是不是里面的程序是怎么做的?什么样的一个思路呢?那这其实就是什么利用了我们这个数据结构的队列的这个思想,
其实上面的两种案例都体现了一个队列这么一个概念。
特殊的线性表,先进先出(FIFO)
顺序存储怎么存,它的特点是什么呢?逻辑上的先后次序把他们依次的存储在一块连续的空间里面。这是我们说的顺序的这个特点啊,那么我们如何去存呢?
首先得有这样一个结构的数据,那么我们要将这组数据存在连续存的空间里面,显然我们先要申请一块连续空间,进而才能存储,所以对列的顺序里面要有一块连续的空间。
然后呢,我们要有front,rear两个数据的空间,我们就可以通过这两个数据来确定我这个队列中有多少个元素,那么要出队的话,通过的front来进行出队,那么入队的话,我们通过rear入队。
front 和rear 其实起到一个非常重要的数据管理作用,所以我们通常把他们两个数据和我们这个存储数据的空间,给它封装在一起。
在c语言中,封装数据用结构体,封装代码用函数。
定义队列结构体
#define MAXSIZE 64 //定义队列的容量
typedef int datatype; //定义队列中数据元素的数据类型
typedef struct
{
datatype data[MAXSIZE]; //用数组作为队列的存储空间
int front,rear; //指示队头前一个位置和队尾位置的指针
}sequeue; //顺序队列类型定义
sequeue
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。