在O(1)时间删除链表结点
题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点
思路是将需要删除节点的值变为他的下一结点,然后删除它的下一结点,这样就像是变相删除了该节点。
void delete_node(node *list,node *toBeDeletedNode){
if(toBeDeletedNode->next){ //不为尾节点
node *p=toBeDeletedNode->next; //修改需要删除那个节点的值,再删除它的后一节点
toBeDeletedNode->data=p->data;
toBeDeletedNode->next=p->next;
delete p;
}else{ //尾节点
node *p=list;
while(p->next!=toBeDeletedNode){
p=p->next;
}
p->next=NULL;
delete toBeDeletedNode;
}
}

浙公网安备 33010602011771号