数据结构与算法Python版MOOC笔记及练习【四】

一、什么是队列

队列是一种有次序的数据集合,其特征是新数据的添加总发生在尾端,而现存数据项的移除总发生在首端,即“先进先出”。队列仅有一个入口和一个出口,不允许数据项直接插入队中,也不允许从中间移除数据项。

在这里插入图片描述

二、什么是双端队列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+b
c

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值