| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 链表练习题(一) -> 正文阅读 |
|
[数据结构与算法]链表练习题(一) |
1.删除链表中等于给定值val的所有节点。 解题思路:遍历链表,查找到给定值节点,删除改节点,即使改节点的上一个节点指向下下一个节点。
2.反转一个单链表。 解题思路: 创建prevNode=null newHead=null currentNode=head 在循环中,currentNode.next=null,的时候找到反转链表的新节点 newHead也就是原链表的最后一个节点。 之后使得 第一个节点currentNode指向null(prevNode) prevNode=currentNode 当前节点(第一个节点) currentNode=nextNode 下一个节点 如此循环 ,即可实现链表的反转。
3.给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 解题思路:获取链表长度 ,获取链表长度的一半再遍历即可。
4.输入一个链表,输出该链表中倒数第k个结点。 解题思路: 首先判断一下成立条件 获取链表的长度len len-k就是该节点的位置 链表从头开始走,走len-k步就是该节点
5.
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
解题思路:
定义一个新链表,创建傀儡节点便于后续插入
在两个链表不为空的条件下,对比两个链表 节点值的大小
如果cur1的值比cur2的值小,那么cur1链表的值就首先插入到新链表当中,反之则插入cur2(这里注意不要忘记更新链表节点)
如果cur1链表插入完成,就将剩余的cur2链表的剩余节点都插入到新链表,反之则将cur1的剩余节点全部插入到新链表。
6.
编写代码,以给定值
x
为基准将链表分割成两部分,所有小于
x
的结点排在大于或等于
x
的结点之前。
解题思路:
定义两个新链表,使用傀儡节点简化插入操作
将所有小于X 的值插入smallTail,反之插入largeTail,
最终再将两个链表合并,使得smallTail.next=largeTail即可。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 16:43:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |