List Merge( List L1, List L2 ){ struct Node *h,*p,*l1,*l2; h = (struct Node*)malloc(sizeof(struct Node)); h->Next = NULL; p = h; l1 = L1->Next; l2 = L ...
分类:
其他好文 时间:
2020-03-30 19:15:39
阅读次数:
66
// 面试题24:反转链表 // 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的 // 头结点。 #include <cstdio> #include "List.h" ListNode* ReverseList(ListNode* pHead) { ListNode* pR ...
分类:
其他好文 时间:
2020-03-27 01:08:33
阅读次数:
60
// 面试题22:链表中倒数第k个结点 // 题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯, // 本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点, // 从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是 // 值为4的 ...
分类:
其他好文 时间:
2020-03-26 01:11:30
阅读次数:
57
下图为最一简单链表的示意图: 第 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
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 解法: 老实用快慢指针,快指针先走n步,然后快慢一起走,直到快指针走到最后,要注意的是可能是要删除第一个节点,这个时候可以直接返回 ...
分类:
其他好文 时间:
2020-03-21 09:39:13
阅读次数:
53
链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节 ...
分类:
其他好文 时间:
2020-03-21 00:01:26
阅读次数:
69
1. 跳跃表的原理 学过数据结构的都知道,在单链表中查询一个元素的时间复杂度为O(n),即使该单链表是有序的,我们也不能通过2分的方式缩减时间复杂度。 如上图,我们要查询元素为55的结点,必须从头结点,循环遍历到最后一个节点,不算-INF(负无穷)一共查询8次。那么用什么办法能够用更少的次数访问55 ...
分类:
其他好文 时间:
2020-03-17 08:23:47
阅读次数:
52
1,循环链表的初始化 定义一个头结点和尾指针的方式,头结点在这里是用来连接 第一个结点和最后一个结点的结点 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 typedef struct Link { 5 int data; 6 struct node* ne ...
分类:
其他好文 时间:
2020-03-17 08:03:38
阅读次数:
50