[关闭]
@XQF 2018-03-07T22:51:58.000000Z 字数 389 阅读 1391

如何在不知道头节点的情况下删除指定节点?

数据结构与算法


分两种情况:

  1. 要删除的节点是尾节点,这个时候是没有办法删除的,因为无法拿到前驱节点的引用,因此无法置前驱节点的next为空
  2. 若不是尾节点就好办了,因此我们要找到一个前驱节点。怎么找了,我们只能知道当前节点的后继节点。于是,,,把当前节点的值与后继节点互换。。。。在当前结点的基础上置.next=.next.next

好一个移花接木
首先判断节点是否有效和是不是尾结点

  1. public boolean deleteNode(ListNode node) {
  2. if(node==null||node.next==null){
  3. return false;
  4. }
  5. ListNode p=node.next;
  6. int temp=p.val;
  7. p.val=node.val;
  8. node.val=temp;
  9. node.next=node.next.next;
  10. return true;
  11. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注