数据结构关键知识点梳理(一)

本文梳理了数据结构中的重要概念,包括容器类型、链表操作、二叉搜索树、逆波兰表达式、堆排序、图的性质、哈夫曼编码、排序算法和哈希表。内容涵盖选择题解析,帮助读者巩固基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、数据结构中的容器

当很频繁地对序列中部进行插入和删除操作时,应该选择使用的容器是(B )

A  vector    B list    C deque     Dstack

   vector一般使用连续的一段内存区域来实现,适合数据变化不大或者仅在末尾添加删除元素的情形;list使用链表方式实现,如果数据变化频繁,首选list;deque是双向队列,一般使用分段连续存储的方式实现,而stack是堆栈,原则上只能在栈顶进行压栈、出栈操作。

2、考察链表

eg1、判断一个单向链表中是否存在环的最佳方法是( )

   A 两重遍历    B 快慢指针     C 路径记录     D 哈希表辅助

正确答案是: B,您的选择是:C

解析:

    定义两个指针fast和slow,每次slow后移一个结点,fast后移两个结点。最开始都在链表头部开始向后移动,如果单链表没有环,fast会达到或超过链表尾部,算法结束;若链表有环,最终两个指针都会进入环中,形成fast指针追赶slow指针的情况,直到某时刻fast和slow相等。此时即可判断链表是有环的。事实上,进一步,这是可以将任意一个指针拉会整个链表头部,另一个指针继续移动,此时两个指针都是一次后移一个结点,当二者再次相遇的结点,即为单链表的环的起始位置。
eg2:设某链表中最常用的操作是在链表的尾部插入或删除元素,假定链表只记录表头指针,则选用下列( )存储方式最节省运算时间。

A 单向链表      B 单向循环链表     C 双向链表    D 双向循环链表

正确答案是:D,您的选择是:A

解析:

    在尾部插入或者删除,需要记录尾结点的前驱,即倒数第2个结点;因为只能通过链表头指针找到倒数第2个结点,如果能够从后向前遍历,则经过两次即可找到它。因此,需要双向循环链表。
    双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表
eg3、链表不具备的特点是( )

A可随机访问任何一个元素 B插入、删除操作不需要移动元素 C无需事先估计存储空间大小 所需存储空间与线性表长度成正比

正确答案是:A,您的选择是:C

解析:

    无论单向链表还是双向链表,都只是记录当前结点的前驱或(和)后继。因此,不能随机访问任意元素。但插入、删除操作不需要移动元素,也不需要事先给定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值