剑指offer--单链表O(1)删除节点

来源:互联网 发布:软路由软件 编辑:程序博客网 时间:2024/06/10 21:59
public class DeleteNode {
/*
* 给定单向链表的头指针和一个节点,定义一个函数在O(1)时间删除该节点
*/

public void deleteNode(ListNode head,ListNode deListNode)
{
if(deListNode==null || head==null)//链表为空
return ;
if(head==deListNode)//删除头结点
{
head=null;
}
else {

if(deListNode.nextNode==null)//删除节点是尾节点
{
ListNode pointListNode=head;
while(pointListNode.nextNode.nextNode!=null)
{
pointListNode=pointListNode.nextNode;//找出尾节点
}
pointListNode.nextNode=null;//删除尾节点
}
else
{
deListNode.data=deListNode.nextNode.data;//尾节点的下一个元素赋值给前一个元素
deListNode.nextNode=deListNode.nextNode.nextNode;//删除下一个结点
}
}
}
}
class ListNode
{
int data;
ListNode nextNode;
}
0 0
原创粉丝点击