单向链表反转的方法有很多,其中用的比较多的是迭代法和递归法,迭代法通俗易懂,递归法相对来说比较难理解一些。 最近读了一些网上的文章对这两种算法的解释后,有些自己的理解分享出来供大家参考。 单向链表反转图示: 一、迭代法 迭代法的解题思路是:通过循环遍历的方式,使链表的每一个节点和它的下一个节点断开, ...
分类:
其他好文 时间:
2020-07-05 19:17:44
阅读次数:
145
1. 简单介绍 链表,即线性表的链式存储结构,链表使用一组任意的存储单元来存储数据元素。如果某两个数据元素在逻辑位置上相邻,那么他们在物理位置上不一定相邻。如图: 但是这样看着太乱了,为了看着舒服,表示方便,我们把这张图改成: 2. 单向链表的结构和特点 在上图中,我们可以看出一个链表包含了存储的数 ...
分类:
其他好文 时间:
2020-07-05 15:36:49
阅读次数:
50
思路:利用快慢指针能实现在时间复杂度为O(n)的情况下,找到第k个节点 1,快指针先走k步 2,快慢指针一起走,直到快指针指向null时,慢指针所在位置就是倒数第k个节点 public static void main(String[] args) { ListNode eight = new Li ...
分类:
其他好文 时间:
2020-07-04 20:54:36
阅读次数:
92
【题目描述】 给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。 示例 1: 输入:intersectVal = 8, listA = [4,1 ...
分类:
其他好文 时间:
2020-07-03 17:15:44
阅读次数:
58
题目: 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 示例 1: 输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> ...
分类:
编程语言 时间:
2020-07-01 20:49:28
阅读次数:
67
问题描述 : 输入若干(不超过100个)非负整数,创建一个不带头结点的单向链表。再输入一个位置index以及一个数据data,程序中首先创建一个新结点s,s的数据成员为data,然后调用函数insertNode将s插入到链表的指定位置index处,最后输出结果链表。请编写insertNode函数,完 ...
分类:
其他好文 时间:
2020-06-24 23:53:44
阅读次数:
121
问题描述 : 输入若干(不超过100个)非负整数,创建一个不带头结点的单向链表。在输入一个位置index,从链表中删除第index个结点,输出结果链表。 请编写deleteNode函数,完成删除操作。deleteNode函数的原型如下: struct student *deleteNode(stru ...
分类:
其他好文 时间:
2020-06-24 23:31:41
阅读次数:
65
1:HashMap 的数据结构? A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。transient Node<K,V>[] table; 2:HashMap 的工作原理? HashMap 底层是 hash 数组和单向链表实现,数组中的每个 ...
分类:
其他好文 时间:
2020-06-24 15:48:49
阅读次数:
48
链表介绍: 链表是以节点的方式来储存,是链式存储; 每个节点包含 data 域,next 域:指向下一个结点; 链表的各个节点不一定是连续存储的; 链表分为带头结点链表 和 没有头结点的链表,根据实际需求来确定; 单链表的应用实例: 使用带 head 头的单向链表实现 水浒英雄排行榜管理完成对英雄人 ...
分类:
其他好文 时间:
2020-06-24 10:33:18
阅读次数:
43
【链表相交】:
给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,
如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。 ...
分类:
编程语言 时间:
2020-06-23 13:15:12
阅读次数:
51