Supprimer la liste est égale à une valeur donnée val tous les nœuds.
exemple:
Entrée: . 1-> 2-> 6-> 3-> 4-> 5-> 6, Val = 6. Rendement: 1-> 2-> 3-> 4-> 5
idées de résolution de problèmes:
Divisé en deux cas à considérer:
1, le premier élément est l'élément à supprimer;
2, le premier élément à des éléments non supprimés
Il doit être réalisé supprimer des éléments de suppression prochain point de devenir le prochain point à son prédécesseur
Code de mise en œuvre:
struct ListNode* removeElements(struct ListNode* head, int val){
struct ListNode* cur = head;
struct ListNode* del = head;
struct ListNode* pre = head;
while(head && head->val == val) {
head = head->next;
free(cur);
cur = head;
}
while (cur) {
if(cur->val == val) {
del = cur;
cur = cur->next;
pre->next = cur;
free(del);
}
else {
pre = cur;
cur = cur->next;
}
}
return head;
}
Le résultat: