面试题13 在O(1)时间删除链表结点

 1 typedef struct Node
 2 {
 3     int elem;
 4     struct Node *next;
 5 }*LinkList, node;
 6 
 7 void Delete(LinkList *head, node *p) {
 8     if (!head || !p)
 9         return;
10     if (p->next != NULL) {
11         node *q = p->next;
12         p->elem = q->elem;
13         p->next = q->next;
14         delete q;
15         p = NULL;
16         q = NULL;
17     }
18     else if (*head == p){
19         delete p;
20         p = NULL;
21         *head = NULL;
22     }
23     else {
24         node *q = *head;
25         while (q->next->next != NULL) {
26             q = q->next;
27         }
28         q->next = NULL;
29         delete p;
30         p = NULL;
31     }
32 }

 

posted @ 2016-04-04 17:44  早杰  阅读(122)  评论(0编辑  收藏  举报