队列的内容

队列的基本概念。
队列:队列简称队,也是一种操作受限的线性表,只允许再表的一端进行插入,在表的另一端进行删除,向队列中插入元素称为入队或者进队,删除元素成为出队或离队。
特征为先进先出,后进后出。
队头,允许删除的一端成为队首。队尾,允许插入的一端,空队列,不含任何元素的空表。
队列常见的操作:
初始化队列,构造一个空队列Q,判断队空,若队列Q为空则返回true,否则返回false。入队,若队列Q未满,将x加入,使之成为新的断尾。出队,若队列Q非空,删除队头元素,并用x返回。读队头元素,若队列q非空,将队头元素赋值给x。
队列是操作受限的线性表,所以,不是任何对线性表的操作都可以作为队列的操作,比如,不可以随便读取队列中间的某个数据。
队列的顺序存储结构,队列的顺序存储,队列的顺序实现是指分配一块连续的存储单元,存放到队列中的元素,并附设两个指针front和rear分别指示队头元素和队尾元素的下一个位置。
队列的顺序存储类型可以描述为,定义队列中元素的最大个数,存放队列元素,队头指针和合队尾指针。
初始状态,队空条件,进队操作,队不满时候,先送值到队尾元素,再将队尾指针加1.出队操作,队不空时,先取队头元素值,再将队头指针加1。循环队列,只有队头合队尾是有指针的。队列中有且仅有1个元素,但仍然满足条件,这时入队出现上溢出,但这种溢出并不是真正的溢出,再data数组中仍然可以存放元素的空位置,所以是一种假溢出。
循环队列,前面已指出了顺序队列的缺点,这里我们引出了循环队列的概念,将顺序队列臆造成一个环状的空间即把存储队列元素的表从逻辑上看成一个环,称为循环队列。当队首指针。。。。。。出队队列时候,指针都按照顺时针方向进1。
队列的链式存储结构:
队列的链式存储,队列的链式表示链队列,它实际上是一个通过是带有队头指针 和队尾指针的单链表,头指针指向对头结点,尾指针指向队尾结点,即单链表的最后一个结点注意与顺序存储的不同。
队列的链式存储类型可以描述为;链式队列的结点,链式队列,队列的队头和队尾指针。链式队列为空。
出队时,首先判断队是否为空,若不空,则取出队头元素,将其从链表摘除,并让q.front指向下一个结点,入队的时候,不难看出,不设头节点的链式队列再操作上往往比较麻烦,因此,通常将链式队列设计了一个由带头结点的单链表,这样插入和删除的操作就统一了。
用单链表表示的链式队列特别适合于数据元素变动比较大的情形,而且不存在队列满而产生溢出的问题,另外,假如程序中要使用链式队列,这样就不会出现存储分配不合理和溢出的问题。
链式队列的基本操作,初始化 ,建立头结点,初始为空,判断空,入队,创建新结点,插入到链尾,出队,空队,若原队列中只有一个结点 ,删除后变空。
双端队列,双端队列是指允许两端都可以进行入队和出队的操作,其元素的逻辑结构仍是线性结构,将队列的两端分别称为前端和后端,两端都可以进行出队和入队。
在双端队列进队时,前端进的元素排列在队列中后端进的元素 前面,后端进的元素排列在队列中前端进的元素的后面,在双端队列出列的时候,无论前端还是后端出队,先出的元素排列在后出的元素的前面。
输出受限的双端队列,允许在一端进行插入和删除,但在另一端只允许插入的双端队列称为输出受限的双端队列。
输出受限的双端队列,允许在一端进行插入和删除,但在另一端只允许删除的双端队列称为输出受限的双端队列。而如果限定双端队列从某个端点插入的元素只能从该端点删除,则该双端队列就蜕变成两个栈底相连接的栈了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值