一、什么是队列
队列是一种有次序的数据集合,其特征是新数据的添加总发生在尾端,而现存数据项的移除总发生在首端,即“先进先出”。队列仅有一个入口和一个出口,不允许数据项直接插入队中,也不允许从中间移除数据项。
二、什么是双端队列Deque
双端队列Deque是一种给有次序的数据集,跟队列相似其两端可以称作“首”、“尾”端,但deque中数据项可以从队首加入,也可以从队尾加入:数据项也可以从两端移除。
双端队列并不具有内在的先进先出(FIFO)或后进先出特性(LIFO)
回文词指正读和反读都一样的词,用双端队列很容易解决回文词问题:先将需要判定的词从队尾加入deque,再从两端同时移除字符判定是否相同,知道deque中剩下0个或1个字符。
三、什么是列表LIST
列表是一种简单强大的数据集结构,提供了丰富的操作接口(不是所有编程语言都提供了list数据类型)
为了实现无序表数据结构,可以采用链接表的方案。列表数据结构要求保持数据项的前后相对位置,但这种前后位置的保持,并不要求数据项一次存放在连续的储存空间。
链表实现的最基本元素是节点Node,每个节点至少包含2个信息:数据项、指向下个节点的引用信息。
四、无序表和无序表
无序表必须要有对第一个节点的引用信息,设立一个属性head保存对第一个节点的引用空表的head为Node。随着数据项的加入,无序表的head始终指向链条中的第一个节点。
有序表是一种数据项依照其某可比性质(整数大小、字母表先后)来决定在列表中的位置
越小的数据项越靠近列表的头,,即越靠前
五、课程练习(自己写的共16.00/19.00分,之后再填坑系列)
1单选(2分)下列叙述正确的是?
A.有两个指针域的链表称为二叉链表
B.栈可以用链式存储结构的单链表实现
C.带链的栈有栈顶指针和栈底指针,因此又称为双重链表
D.节点中具有多个指针域的链表称为多重链表
2单选(2分)用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时
A.仅修改队头指针
B.仅修改队尾指针
C.队头、队尾指针都可能要修改,但不必然都修改
D.队头、队尾指针都必须要修改
3单选(2分)递归过程或函数调用时,处理参数或返回地址,用以下哪种数据结构最合适?
A.队列
B.多维数组
C.栈
D.线性表
4单选(2分)设有序单链表的关键字序列为{1,4,6,11,19,35,52,54,57,71,78,86,92,96},当查找关键字为21的结点时,经( )次比较后查找失败?
A.7
B.3
C.14
D.6
5单选(2分)设某顺序表中第一个元素的起始存储地址为a,每个元素的长度为b,则第c个元素的起始地址是?(a,b,c均为非负整数)
A.a+b(c-1)*
B.a+(b-1)c
C.a+b+c
D.a+bc
6多选(3分)以下哪些不是单链表的特点?
A.插入删除元素时需要移动表中元素
B.随机存取
C.插入删除元素时需要修改指针
D.顺序存取
7多选(3分)以下哪些是顺序表的特点?
A.插入删除元素时不需要移动表中元素
B.顺序存取
C.随机存取
D.插入删除元素时需要移动表中元素
8多选(3分)设一个队列的入队顺序是1,2,3,4,5,那下列哪些是不能存在的出队顺序?
A.2,3,4,5,1
B.1,2,3,5,4
C.5,4,3,2,1
D.3,4,5,1,2