1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| void removeOne(Node* list, Data val) { if (empty(list)) return;
Node* preNode = list; Node* curNode = list->next; while (curNode) { if (curNode->data == val) { break; } preNode = curNode; curNode = curNode->next; } if (curNode) { preNode->next = curNode->next; free(curNode);
} }
void removeAll(Node* list, Data val) { if (empty(list)) return;
Node* preNode = list; Node* curNode = list->next; Node* delNode = NULL; while (curNode) { if (curNode->data == val) { preNode->next = curNode->next; delNode = curNode; } else { preNode = curNode; } curNode = curNode->next; if (delNode) { free(delNode); delNode = NULL; } } }
|