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 }