码迷,mamicode.com
首页 > 其他好文 > 详细

237.单链表移除节点 Delete Node in a Linked List

时间:2017-01-10 23:35:13      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:neu   port   odi   image   sed   pad   oid   display   margin   

Question

Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.

Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become 1 -> 2 -> 4after calling your function.

Solution

Approach: Swap with Next Node [Accepted]

The usual way of deleting a node node from a linked list is to modify the next pointer of the node before it, to point to the node after it.

技术分享

Since we do not have access to the node before the one we want to delete, we cannot modify the next pointer of that node in any way. Instead, we have to replace the value of the node we want to delete with the value in the node after it, and then delete the node after it.

技术分享

技术分享

技术分享

Because we know that the node we want to delete is not the tail of the list, we can guarantee that this approach is possible.


  1. public void DeleteNode(ListNode node) {
  2. node.val = node.next.val;
  3. node.next = node.next.next;
  4. }





237.单链表移除节点 Delete Node in a Linked List

标签:neu   port   odi   image   sed   pad   oid   display   margin   

原文地址:http://www.cnblogs.com/xiejunzhao/p/9d6b2ef73274fbe105d81d0b3bb8df61.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!