1 链栈通常用单链表表示,由于栈的主要操作是栈顶插入与删除,显然以链表的头部作为栈顶最方便,而且没必要为了操作方便附加一个头结点 2 //链式存储结构(将单链表头指针与栈顶合二为一) 3 typedef struct StackNode 4 { 5 ElemType data; 6 struct S ...
分类:
其他好文 时间:
2020-03-14 13:11:30
阅读次数:
45
本题要求实现一个函数,将给定的单链表逆转。 函数接口定义: List Reverse( List L ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrTo ...
分类:
其他好文 时间:
2020-03-14 10:47:23
阅读次数:
76
给定一个带头结点的单链表和一个整数K,要求你将链表中的每K个结点做一次逆转。例如给定单链表 1→2→3→4→5→6 和 K=3,你需要将链表改造成 3→2→1→6→5→4;如果 K=4,则应该得到 4→3→2→1→5→6。 函数接口定义: void K_Reverse( List L, int K ...
分类:
其他好文 时间:
2020-03-13 18:42:35
阅读次数:
68
参考与原理:https://www.jianshu.com/p/ef71e04241e4 https://blog.csdn.net/danny_idea/article/details/89504629 1 #include <bits/stdc++.h> 2 using namespace st ...
分类:
其他好文 时间:
2020-03-13 13:01:25
阅读次数:
42
设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。 在链表类中实现 ...
分类:
其他好文 时间:
2020-03-12 09:45:28
阅读次数:
53
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 class Solution { publ ...
分类:
其他好文 时间:
2020-03-11 23:59:07
阅读次数:
113
206. 反转链表 难度简单反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? /** * Definition for singly-linked list. * stru ...
分类:
其他好文 时间:
2020-03-10 13:41:48
阅读次数:
81
线性结构 链表 链表介绍 链表是有序的列表,在内存中的存储为: 链表是以节点的方式来存储 每个节点包含data域,next域:指向下一个节点 各个节点不一定是连续存储的 链表分带头结点和不带头节点,根据实际需求来确定 单链表应用 使用带头节点的单向链表实现水浒传英雄排行榜 方法一、添加英雄时,直接添 ...
分类:
其他好文 时间:
2020-03-09 22:38:21
阅读次数:
55
在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是: 第一个for循环的时间复杂度为Ο(n),第二个for循环的时间复杂度为Ο(n²),则整个算法的时间复杂度为Ο(n+n²)=Ο(n²)。 注、加法原则:T(n)=O(f(n))+O(g(n))=O(max(fn,gn)) 常 ...
分类:
其他好文 时间:
2020-03-09 18:13:24
阅读次数:
57
要点: 1、计算旋转的次数rot=k%len 2、链表尾部要链接头部构成循环条件,才能输出完整的循环链表 3、在头部放指针分别遍历一定次数,寻找到头尾,再将尾部链接下一个元素断开又形成了单链表。 1 public ListNode rotateRight(ListNode head, int k) ...
分类:
其他好文 时间:
2020-03-09 13:14:13
阅读次数:
60