题目:
链表之删除链表中间节点
思路:
方法1:
我们先得到链表的长度,如果是奇数的话加一除以2,如果是偶数直接除以二,
得到的长度,然后从头结点开始遍历得到的长度前一个节点,然后把它删除
得到的长度,然后从头结点开始遍历得到的长度前一个节点,然后把它删除
方法2:
比如链表是1 、2 删除节点1
比如链表是1 、2、3 删除节点2
比如链表是1 、2 、3、4 删除节点2
比如链表是1 、2 、3、4、5 删除节点3、
比如链表是1 、2 、3、4、5 、6删除节点3
如果链表长度为1,不需要调整,如果链表长度为2,删除头结点,如果链表长度为3,删除第二个节点
当链表的长度为4的时候,应该删除第二个节点,当链表长度为5的时候,应该删除第3个节点。
总结:链表的长度没增加2(3,5,7),要删除的节点就后移一个节点。
比如链表是1 、2、3 删除节点2
比如链表是1 、2 、3、4 删除节点2
比如链表是1 、2 、3、4、5 删除节点3、
比如链表是1 、2 、3、4、5 、6删除节点3
如果链表长度为1,不需要调整,如果链表长度为2,删除头结点,如果链表长度为3,删除第二个节点
当链表的长度为4的时候,应该删除第二个节点,当链表长度为5的时候,应该删除第3个节点。
总结:链表的长度没增加2(3,5,7),要删除的节点就后移一个节点。
代码实现:
package com.chenyu.zuo.linkedList;import com.chenyu.zuo.linkedList.RemoveLastNodeSingleLinked.Node;public class RemoveMidNode {public class Node{public int value;public Node next;public Node(int value){this.value=value;