删除链表的中间节点(每日一道算法题)
来源:互联网 发布:2016流行的编程语言 编辑:程序博客网 时间:2024/06/02 01:18
题目:删除一个链表的中间节点,当链表只有一个节点的时候或者head节点为空的时候返回head,当链表有两个节点的时候删除第一个节点,当链表有三个节点的时候删除第二个节点,当链表有四个节点的时候删除第二个节点,当链表有五个节点的时候删除第三个节点……
分析:一个链表长度每增加二,要删除的节点就后移一个节点,要删除一个节点需要知道它的前一个节点。
Code:
public static Node removeMidNode(Node head) { //如果head为空或者链表只有一个头结点,那么直接返回这个head if(head == null||head.next == null) { return head; } //如果链表只有两个节点,那么删除第一个节点,也就是返回第二个节点 if(head.next.next == null) { return head.next; } Node pre = head;//中间节点的前一个节点从head开始 Node cur = head.next.next;//从第三个节点开始为当前节点 while(cur.next != null && cur.next.next != null) {//当节点每后增加两个数,中间节点就后移一个节点 pre = pre.next;//中间节点的前一个节点 cur = cur.next.next;//cur表示链表的最后一个节点 } pre.next = pre.next.next;//使得中间节点的前一个节点指向中间节点的后一个节点(删除中间节点) return head;//返回这个头节点 }
参考书籍:《程序员代码面试指南》
阅读全文
0 0
- 删除链表的中间节点(每日一道算法题)
- 删除链表的倒数第K个节点(每日一道算法题)
- 删除链表的中间节点
- 删除链表的中间节点
- 删除链表的中间节点
- 删除链表中间节点
- 删除链表中间节点
- 反转单向链表(每日一道算法题)
- 链表问题(2)-- 删除聊表的中间节点和a/b处的节点
- 单链表 算法(删除中间节点)
- 打印两个有序链表的公共部分(每日一道算法题)
- 寻找和删除链表的中间节点
- 每天一道算法题(4)——O(1)时间内删除链表节点
- 【每日一道算法题】
- 【每日一道算法题】
- 【每日一道算法题】
- 【每日一道算法题】
- 【每日一道算法题】
- 1029. 旧键盘(20) PAT乙级真题
- !function(){}
- log4j两种常用配置
- springmvc使用hibernate-validation校验器异常
- MongoDB 副本集的原理、搭建、应用
- 删除链表的中间节点(每日一道算法题)
- 2XML结构
- CornerStone的使用
- 计蒜客 最后一个单词的长度
- 转载:Spring Boot (五):spring data jpa的使用
- java操作Excel
- 关于android studio首次开启项目打开很慢解决办法
- java 中的json包
- 15算法课程 234. Palindrome Linked List