题目:给定链表的头指针和一个结点指针,在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; } }