删除链表中间节点
2016-12-15 00:26
204 查看
删除链表中间节点
[题目]给定一个链表,然后实现删除链表中间节点的函数。
例如:
没有节点或者只有一个节点———不删除任何节点
1->2: 删除节点1
1->2->3: 删除节点2
1->2->3->4: 删除节点2
1->2->3->4->5: 删除节点3
[解答]
1.定义节点
package com.ahut; public class Node { public int data; public Node next; public Node(int data) { this.data = data; } }
2.主要逻辑部分
package com.ahut; public class Utils { public static Node removeMidNode(Node head) { if(head == null || head.next == null) { //没有节点或者只有一个节点,不删除 return head; } if(head.next.next == null) { //两个节点的情况,删除第一个节点 return head.next; } Node pre = head; Node cur = head.next.next; if(cur.next != null && cur.next.next != null) { //没增加两个节点,删除节点的序号就要加1 pre = pre.next; cur = cur.next.next; } pre.next = pre.next.next; return head; } }
3.测试部分
package com.ahut;
public class Test { public static void main(String[] args) { Node head = new Node(1); head.next = new Node(2); head.next.next = new Node(3); head.next.next.next = new Node(4); head.next.next.next.next = new Node(5); head.next.next.next.next.next = new Node(6); printLinkedList(head); head = Utils.removeMidNode(head); printLinkedList(head); } public static void printLinkedList(Node head) { System.out.print("Linked List: "); while (head != null) { System.out.print(head.data + " "); head = head.next; } System.out.println(); } }
4.测试结果
相关文章推荐
- 删除链表的中间节点
- 删除链表的中间节点 / 删除链表a/b处的节点
- 删除链表的中间节点
- 链表面试题逆序打印,删除无头非尾节点,非头位置插入,约瑟夫环,查找中间和倒数第k个节点
- 建立一个带附加头结点的单链表.实现测长/打印/删除结点/插入结点/逆置/查找中间节点/查找倒数第k个节点/判断是否有环
- cci-Q2.3 只给出中间节点,删除链表中间节点
- 删除链表的中间节点
- 给定链表中间节点指针,删除中间节点的方法
- 给定链表中间节点指针,删除中间节点的方法
- 007 算法:从单链表中删除一个中间节点
- [google面试CTCI] 2-3 只给定链表中间节点指针,如何删除中间节点?
- 带头结点的链表头插,尾插,中间插以及删除节点
- [google面试CTCI] 2-3 只给定链表中间节点指针,如何删除中间节点?
- 单向循环链表的头插,尾插,中间插以及删除节点
- 链表问题---删除链表的中间节点和a/b处的节点
- 单链表的创建和遍历、求单链表中节点的个数、查找单链表中的中间结点、判断单链表是否有环、取出有环链表中环的长度,删除有序链表中的重复结点
- 链表之删除链表中间节点
- 链表问题 删除链表的中间节点和a/b处的节点
- 关于长单链表中间节点删除
- 删除链表的中间节点和a/b处的节点