删除链表中指定节点,要求时间复杂度为O(1)

思路:

(1)把要删除的节点的值与其next交换

(2)删除其next

(3)完成

算法:

 1 void DeleteNode(LinkList *p){
 2     if(p->next=NULL){
 3          free(p);
 4          p=NULL;
 5      }else{
 6           LinkList* lk=p->next;
 7           int temp=p->data;
 8           p->data=lk->data;
 9           lk->data=temp;
10           p->next=lk->next;
11           free(lk);
12      }
13 }

转载于:https://www.cnblogs.com/GoAhead/archive/2012/05/24/2516045.html

你可能感兴趣的:(删除链表中指定节点,要求时间复杂度为O(1))