不知道前驱的情况下删除某个节点 p
题目
不知道前驱的情况下删除某个节点 p
思路
方法1:复制节点数据实现
链表的后继数据复制到p的数据中去 然后p的后继指向p.next.next;
下面就看代码实现:
public static Boolean DeleteLNode(LNode p){
if (p==null || p.next==null) return false;
p.data=p.next.data;
LNode temp=p.next;
p.next=temp.next;
return true;
}
测试代码:
public static void main(String[] args) {
int i=1;
LNode head=new LNode();
head.next=null;
LNode temp=null;
LNode cur=head;
LNode p=null;
for (; i <8 ; i++) {
temp=new LNode();
temp.data=i;
temp.next=null;
cur.next=temp;
cur=temp;
if (i==5) p=temp;
}
System.out.print("删除节点"+p.data+"前的链表");
PrintList(head);
Boolean node = DeleteLNode(p);
if (node){
System.out.print("\n删除节点后的链表");
PrintList(head);
}
}
结果:
删除节点5前的链表1->2->3->4->5->6->7->
删除节点后的链表1->2->3->4->6->7->
Process finished with exit code 0