删除链表中指定节点,要求时间复杂度为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 }

posted on 2012-05-24 09:40  为梦飞翔  阅读(854)  评论(0编辑  收藏  举报

导航