初学Linked List
初学LinkedList
ha_soga
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
反转一个单链表LinkedList
迭代法 High Level : 创建一个null并让pre指向null(ListNode pre = null),cur指向head(LIstNode cur = head)。 循环里面要做的是 step1:每一次让cur指向pre(cur.next = pre) step2:pre和cur同步移动 (因为cur.next现在已经变成pre了,(所以不能通过cur = cur.next来移动cur)所以得新建next指针指向没改变之前的cur.next,因此新建next指针并指向cur.nex.原创 2021-11-04 20:32:53 · 438 阅读 · 0 评论 -
把LinkedList的中的给定值删除
有可能删除head,可以使用dummy node public ListNode remove(ListNode head,int target) { // corner case if (head == null) { return null; } // 创建一个dummy node并把head链接到dummy后面 ListNode dummy = new ListNode(-1); dummy.next = head;原创 2021-11-03 17:38:23 · 192 阅读 · 0 评论 -
合并两个有序的Linked List
High Level : 两个LinkedList分别两个指针从各自的head开始-->谁小取谁,取谁移谁。(也就是从各自的head开始,每次将两个指针所在的值进行比较,取出小的一个,然后将其指针向后移动,继续重复这个操作),直到其中一个List先取完了,再把另外一个List剩下的链接上去。 public ListNode merge(ListNode one,ListNode two) { // corner case if (one == null && two原创 2021-11-03 17:14:17 · 822 阅读 · 0 评论 -
使用dummy在有序Linked List里面插入node,保持有序
在对Linked List进行操作时,当head有可能会改变时,给head前创建一dummy,并使其指向head --保持对head的控制权 stop codition : cur == null || cur.value >= target public ListNode insert(ListNode head,int target) { // 先创建要插入的N ListNode N = new ListNode(target); // corner case原创 2021-11-02 21:46:43 · 759 阅读 · 0 评论 -
在一有序Linked List中插入一个node,保持有序
例如:给定Linked List 1 --> 3 --> 6 --> 9 --> 13 --> null (要插入int target 0 7 14,分别对应三种情况1.插在最头,2.插在中间,3.插在最后) ListNode N = new ListNode(target)//首先创建一个要插入的node case 0 :给定的LinkedList 是null return N; case 1 : target比first node还要小 N.n...原创 2021-11-02 21:28:05 · 527 阅读 · 0 评论 -
Find Linked List中间的node
快慢指针法 :ListNode fast = head,fast每次走两步,ListNode slow = head,slow每次走一步,当fast走完的时候slow刚好走一半。(因为奇数,偶数一半不同) 所以要对长度为奇数偶数分别讨论 Odd N1 --> N2 --> N3 --> N4 --> N5 --> null slow fast N1 --> N2 --> N3 --> N4 --> N5 --> null ...原创 2021-11-02 20:23:04 · 253 阅读 · 0 评论 -
给一个Linked List,找到给定索引(k)的node
需要 给一个头,ListNode head,和要找到索引int k 然后需要ListNode cur = head 来标记当前是哪一个ListNode int Index =0 来记录当前node的Index(head的索引为0) public ListNode findIndex(ListNode head,int k){ // corner case 头是空或者k<0,肯定找不到(注意head索引是0) if (head == nu...原创 2021-11-02 19:52:04 · 187 阅读 · 0 评论 -
给一个Linked list,计算其长度
首先要知道第一个node所在抽屉编号,给一个输入 ListNode head 然后需要ListNode cur 标记看到了哪一个ListNode,开始把head赋给cur int count = 0 计算数了多少node 每数一个node,cur向后移一个,count++。 最开始向下面这样: head N1 --> N2 --> N3 --> null cur count = 0 然后判断node是不是0,不是...原创 2021-11-02 19:29:59 · 497 阅读 · 0 评论 -
Create Linked List
每一个节点相当于一个抽屉,对应一个地址值,每一个抽屉里面有1. 名字(ListNode)2.value 3.ListNode next = (下一个指向的地址值) class ListNode { public int value; // 储存值 public ListNode next; // it's a reference or address 小纸条、抽屉编号 public ListNode(int x){ // 构造函数 this....原创 2021-11-02 19:08:36 · 264 阅读 · 0 评论
分享