![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
文章平均质量分 66
Emperorist
患病者
展开
-
面试题24-反转链表
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。链表节点定义如下:struct ListNode{ int m_nValue; ListNode *m_pNext;};解题思路为了正确地反转一个链表,我们使用三个指针,分别指向当前遍历到的节点、它的前一个节点以及后一个节点。最后我们试着找到反转后链表的头节点。不难分析出反转后链表的头节点是原始链表的尾节点。尾节点是m_pNext为nullptr的节点。C++实现ListNode *ReverseList(L原创 2021-11-07 23:44:28 · 207 阅读 · 0 评论 -
面试题52-两个链表的第一个公共节点
题目:输入两个链表,找出它们的第一个公共节点。链表节点定义如下:struct ListNode{ int m_nValue; ListNode *m_pNext; ListNode(int val): m_nValue(val), m_pNext(NULL) {};};解题思路我们采用空间复杂度为O(1)和时间复杂度为O(m+n)的方法:如下图:c1是两个链表的第一个公共节点。我们可以先遍历一次得到它们的长度分别为5和6,也就是较长的链表与较短的链表相比多一个节点。第二次先在长的原创 2021-11-19 00:12:40 · 730 阅读 · 0 评论 -
面试题36-二叉搜索树与双向链表
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。解题思路首先,让我们来回顾一下搜索二叉树的结构一些相关特点:(1)在二叉搜索树中,每个结点都有两个分别指向其左、右子树的指针;(2)左子树结点的值总是小于父结点的值,右子树结点的值总是大于父结点的值。该结构特点可以类比到双向链表中:在双向链表中,每个结点也有两个指针,它们分别指向前一个结点和后一个结点。所以这两种数据结构的结点是一致,二叉搜索树之所以为二叉搜索树,双向链表之原创 2021-11-18 17:53:57 · 690 阅读 · 0 评论 -
Leetcode热题Hot100-链表题综合
2-两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。提示:每个链表的节点数在范围[1,100]内0<=Node.val<=9题目数据保证列表表示的数字不含前导零解题思路由于输入的两个链表都是逆序存储数字的位数的,因此两个链表中同一位置的数字可以直接相加。我们同时遍历两个链表,逐位计算原创 2021-11-09 16:43:41 · 1275 阅读 · 2 评论 -
面试题35-复杂链表的复制
题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)struct RandomListNode { int label; struct RandomListNode *next, *random; RandomListNode(int x) : label(x), next(NULL), r原创 2021-11-16 12:40:13 · 88 阅读 · 0 评论