原题链接 来源:剑指offer, Hulu面试题 题意很简单。给定一个单链表,反转这个单链表,返回翻转后的头节点。 方法一 借助栈的性质 要将链表翻转,很容易想到借助栈的后进先出的性质来改变链表的顺序。 将链表节点顺序压入栈中,链表节点全部进栈以后,取栈顶元素作为新链表的头节点,然后将元素不断出栈, ...
分类:
其他好文 时间:
2020-07-10 11:23:11
阅读次数:
75
1. 设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点。 2.在带头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,试编写算法以实现上述操作。 3. 设I为带头结点的单链表,编写算法实现从尾到头反向输出每个结点的值。 4.试编写在带头结点的单链表L中删除一个 ...
分类:
其他好文 时间:
2020-07-10 10:13:31
阅读次数:
71
链表总结 链表基础 如何实现一个单链表 #include "bits/stdc++.h" using namespace std; struct MyListNode { int data; MyListNode *next; MyListNode(int left = -1, MyListNode ...
分类:
其他好文 时间:
2020-07-09 22:31:25
阅读次数:
55
【题目描述】 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 1: 输入: 1->2 ...
分类:
其他好文 时间:
2020-07-08 13:44:21
阅读次数:
63
最近复习了线性表,对链表这一部分遗忘最大,所以手动实现一下加深理解,附上C++代码: #include <iostream> using namespace std; typedef struct LNode //定义一个结构体作为链表结构,有指针域和数据 { int data; struct LN ...
分类:
编程语言 时间:
2020-07-07 09:54:52
阅读次数:
88
题目描述 给定一个二叉树,原地将它展开为一个单链表。 例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/flatten-binary ...
分类:
其他好文 时间:
2020-07-05 19:16:52
阅读次数:
57
问题描述 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 注意点:实例一中相交的节点是8而不是1。这里可以这样理解两个链表相交的节点是指节点本身相同,而不单单是节点的值同,还要地址相同。相交点是出题者自己定义的,实例一的intersectval是 8 说明出题者定义的两个链表中的 ...
分类:
其他好文 时间:
2020-07-05 17:26:30
阅读次数:
49
数组 实现一个支持动态扩容的数组 实现一个大小固定的有序数组,支持动态增删改操作 实现两个有序数组合并为一个有序数组 链表 实现单链表、循环链表、双向链表,支持增删操作 实现单链表反转 实现两个有序的链表合并为一个有序链表 实现求链表的中间结点 栈 用数组实现一个顺序栈 用链表实现一个链式栈 编程模 ...
分类:
编程语言 时间:
2020-07-05 13:12:20
阅读次数:
89
// 反转单链表 ListNode * ReverseList(ListNode * pHead) { // 如果链表为空或只有一个结点,无需反转,直接返回原链表头指针 if(pHead == NULL || pHead->next == NULL) return pHead; ListNode * ...
分类:
其他好文 时间:
2020-07-04 22:37:54
阅读次数:
78
P1160 队列安排 AKA 指针模板题 链表模板题,本题目下$list$的教学已经很多了,我来讲点更加基础的$\rightarrow$ 基础指针(结构体内) 写在前面:本教程假设读者基本了解指针的定义以及使用,能会用指针写a+b就行 写主席树,平衡树时我们会发现数组套数组的写法十分难受 ... i ...
分类:
编程语言 时间:
2020-07-04 22:21:36
阅读次数:
79