博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表刷题总结
阅读量:5270 次
发布时间:2019-06-14

本文共 1083 字,大约阅读时间需要 3 分钟。

* class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * }

查找一个链表的中间节点:使用快慢指针,

查找链表的倒数第几个结点也可以使用,即让快指针先走k步,然后快慢指针一起走,当快指针走到头的时候,慢指针刚好走到那个位置的上一个结点。

  注意:如果用途是对链表的左右分别递归调用时,需要将中间节点的前一个结点的next = null  即需要一个pre结点(注意先要赋null初始化)

ListNode midList(ListNode node){        if(node == null || node.next == null) return node;        ListNode slow = node, fast = node;        ListNode pre = null;        while(fast != null && fast.next != null){            pre = slow;            slow = slow.next;            fast = fast.next.next;        }        pre.next = null;        return slow;    }

  

反转一个链表,并返回头结点

ListNode reverse(ListNode node){        if(node == null || node.next == null) return node;        ListNode pre = null;        while(node != null){            ListNode next = node.next;            node.next = pre;            pre = node;            node = next;        }        return pre;    }

  

 可以选择一个ListNode node = new ListNode(0)来作为前缀,到时候返回的时候直接返回node.next

  

转载于:https://www.cnblogs.com/SkyeAngel/p/9284991.html

你可能感兴趣的文章
Codeforces Round #250 (Div. 2)——The Child and Set
查看>>
linux常用命令
查看>>
高并发和多线程概念
查看>>
Sublime Text 编译运行Kotlin
查看>>
栈实现判断回文
查看>>
哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(低年级)
查看>>
WebApi Help Pages
查看>>
SpringMVC学习笔记
查看>>
memcache课程---2、php如何操作memcache
查看>>
英语中常见的反义词组
查看>>
html5--2.3新的布局元素(2)-article
查看>>
ERROR OGG-01172 Discard file (./dirrpt/repl.dsc) exceeded max bytes (50000000)
查看>>
(转)JavaScript中判断对象类型的种种方法
查看>>
第六节,初识python和字符编码
查看>>
第七十九,CSS3背景渐变效果
查看>>
libcurl 静态库编译
查看>>
SVN服务器搭建和使用(二)
查看>>
[转]Tesseract 3.02中文字库训练
查看>>
[转载]表单校验之datatype
查看>>
mysql创建数据库
查看>>