随笔分类 -  数据结构与算法 / 链表

摘要:1.题目介绍 题目地址(61. 旋转链表 - 力扣(LeetCode)) https://leetcode.cn/problems/rotate-list/ 题目描述 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head = [1,2,3,4, 阅读全文
posted @ 2024-06-30 23:20 DawnTraveler 阅读(34) 评论(0) 推荐(0) 编辑
摘要:1.题目 题目地址(82. 删除排序链表中的重复元素 II - 力扣(LeetCode)) https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/ 题目描述 给定一个已排序的链表的头 head , 删除原始链表中所有重复 阅读全文
posted @ 2024-05-01 21:36 DawnTraveler 阅读(9) 评论(0) 推荐(0) 编辑
摘要:1.题目 题目地址(83. 删除排序链表中的重复元素 - 力扣(LeetCode)) https://leetcode.cn/problems/remove-duplicates-from-sorted-list/ 题目描述 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出 阅读全文
posted @ 2024-05-01 18:38 DawnTraveler 阅读(8) 评论(0) 推荐(0) 编辑
摘要:1.题目 题目地址(203. 移除链表元素 - 力扣(LeetCode)) https://leetcode.cn/problems/remove-linked-list-elements/ 题目描述 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val = 阅读全文
posted @ 2024-05-01 12:00 DawnTraveler 阅读(10) 评论(0) 推荐(0) 编辑
摘要:1.题目介绍 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 例 阅读全文
posted @ 2024-01-21 00:25 DawnTraveler 阅读(9) 评论(0) 推荐(0) 编辑
摘要:1.题目介绍 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head = [4,2,1,3] 输出:[1,2,3,4] 2.题解 在147.对链表进行插入排序中我们使用插入排序的方式对于链表进行排序 插入排序的时间复杂度是 O(n^2),其中 n 是链 阅读全文
posted @ 2024-01-20 17:41 DawnTraveler 阅读(6) 评论(0) 推荐(0) 编辑
摘要:1.题目介绍 给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回 排序后链表的头 。 插入排序 算法的步骤: 1.插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 2.每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并 阅读全文
posted @ 2024-01-18 20:21 DawnTraveler 阅读(53) 评论(0) 推荐(0) 编辑
摘要:1.题目介绍 题目地址(24. 两两交换链表中的节点 - 力扣(LeetCode)) https://leetcode.cn/problems/swap-nodes-in-pairs/ 题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本 阅读全文
posted @ 2024-01-18 17:06 DawnTraveler 阅读(5) 评论(0) 推荐(0) 编辑
摘要:1.题目介绍 题目地址(206. 反转链表 - 力扣(LeetCode)) https://leetcode.cn/problems/reverse-linked-list/ 题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3, 阅读全文
posted @ 2023-10-28 16:21 DawnTraveler 阅读(35) 评论(0) 推荐(0) 编辑
摘要:1. 总结 在对链表进行操作时,一种常用的技巧是添加一个哑节点(dummy node),它的 next 指针指向链表的头节点。这样一来,我们就不需要对头节点进行特殊的判断了。 例如,如果我们要删除节点 y,我们需要知道节点 y 的前驱节点 x,并将 x 的指针指向 y 的后继节点。但由于头节点不存在 阅读全文
posted @ 2023-10-27 16:27 DawnTraveler 阅读(781) 评论(0) 推荐(0) 编辑
摘要:1.题目介绍 2.题解 一定注意题目给的两个链表可能为空,需要提前进行判断 2.1 迭代(就是链表最基本的插入操作) /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * 阅读全文
posted @ 2023-10-20 22:23 DawnTraveler 阅读(8) 评论(0) 推荐(0) 编辑
摘要:1.题目 例2.9建立一个带头结点的线性链表,用以存放输人的二进制数,链表中每个结点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算。 2.算法分析 3.代码 /* 二进制加1 */ void BinAdd(LinkList l) { int temp; Node *pa = l- 阅读全文
posted @ 2023-09-11 11:43 DawnTraveler 阅读(28) 评论(0) 推荐(0) 编辑
摘要:1.题目 例2.8已知带头结点单链表L,设计算法实现:以表中第一元素作为标准,将表中所有值小于第一个元素的结点均放在第一结点之前,所有值大于第一元素的结点均放在第一元素结点之后。 2.算法分析 3.代码 //顺序调整 void changeList(LinkList L){ int temp; /* 阅读全文
posted @ 2023-09-11 11:16 DawnTraveler 阅读(149) 评论(0) 推荐(0) 编辑
摘要:1.题目 例2.7 算法实现带头结点单链表的就地逆置问题。 2.算法思想 3.代码 //就地逆置 void ReverseList(LinkList L){ Node *p, *q; p = L->next; L->next = NULL; while (p){ q = p->next; p->ne 阅读全文
posted @ 2023-09-11 10:43 DawnTraveler 阅读(11) 评论(0) 推荐(0) 编辑
摘要:4,有n个整数,使前面各数顺序向后m个位置,最后m个数变成最前面m个数,见图 8.43。写一函数实现以上功能在主函数中输入个整数和输出调整后的n个数。 我的代码: 1.使用双向链表 void MoveDLink(DoubleList head, int m, int n) { /* 寻找原链表第n- 阅读全文
posted @ 2023-09-10 20:33 DawnTraveler 阅读(27) 评论(0) 推荐(0) 编辑
摘要:1.题目介绍 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 阅读全文
posted @ 2023-09-10 20:14 DawnTraveler 阅读(7) 评论(0) 推荐(0) 编辑
摘要:1.题目: 已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度。 链表结点定义如下: struct _lnklist{ ElemType data; struct _lnkl 阅读全文
posted @ 2023-09-10 19:25 DawnTraveler 阅读(23) 评论(0) 推荐(0) 编辑
摘要:例2.3 有两个链表LA和LB,其元素均为非递减有序排列,编写算法,将它们合并成一个链表LC,要求LC也是非递减有序排列。 例如,LA=(2,2,3),LB=(1,3,3,4),则LC=(1,2,2,3,3,3,4)。 #include <stdio.h> #include <stdlib.h> # 阅读全文
posted @ 2023-09-10 11:04 DawnTraveler 阅读(21) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示