一、单链表是否有环 思路分析: 单链表有环,是指单链表中某个节点的next指针域指向的是链表中在它之前的某一个节点,这样在链表的尾部形成一个环形结构。判断链表是否有环,有以下几种方法。 1 // 链表的节点结构如下 2 typedef struct node 3 { 4 int data; 5 st ...
分类:
其他好文 时间:
2020-03-24 12:34:29
阅读次数:
84
下图为最一简单链表的示意图: 第 0 个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个指针变量。以下的每个结点都分为两个域,一个是数据域,存放各种实际的数据,如学号 num,姓名 name,性别 sex 和成绩 score 等。另一个域为指针域,存放下一结点的首地址。链表中的每一个 ...
分类:
编程语言 时间:
2020-03-24 11:06:20
阅读次数:
110
"链表的中间结点" 题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例1 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5 ...
分类:
其他好文 时间:
2020-03-23 12:35:40
阅读次数:
62
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ...
分类:
其他好文 时间:
2020-03-23 09:28:43
阅读次数:
78
160.相交链表 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出: ...
分类:
其他好文 时间:
2020-03-20 11:11:36
阅读次数:
71
1. 跳跃表的原理 学过数据结构的都知道,在单链表中查询一个元素的时间复杂度为O(n),即使该单链表是有序的,我们也不能通过2分的方式缩减时间复杂度。 如上图,我们要查询元素为55的结点,必须从头结点,循环遍历到最后一个节点,不算-INF(负无穷)一共查询8次。那么用什么办法能够用更少的次数访问55 ...
分类:
其他好文 时间:
2020-03-17 08:23:47
阅读次数:
52
1 #include <stdio.h> 2 #include <stdlib.h> 3 #define OK 0 4 #define ERROR -1 5 6 // 7 typedef int Status; 8 typedef int ElemType; 9 10 /* 11 单链表的存储结构: ...
分类:
编程语言 时间:
2020-03-16 10:02:50
阅读次数:
69
/*双向链表 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方 便地访问它的前驱结点和后继结点。 下图是双向链表的逻辑结构图,和单链表不同的是,双向链表中每个节点包含两个节点的指针引用,和一个数据域,这两个 ...
分类:
其他好文 时间:
2020-03-15 13:03:57
阅读次数:
64
反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULLstruct ListNode* reverseList(struct ListNode* head){ struct ListNode *pre = NULL; struct L ...
分类:
编程语言 时间:
2020-03-14 16:40:58
阅读次数:
51
Chapter6 双指针,BFS和图论 + 双指针 1.日志统计 1238 经典的双指针模板题 所谓双指针其实就是针对多重循环的一种优化方式,缩小时间复杂度以确保不会TLE 循环的是一个时间段 + 单链表 1.单链表 826 ...
分类:
其他好文 时间:
2020-03-14 14:57:08
阅读次数:
49