Étant donné une liste chaînée, nous devons supprimer son premier élément et renvoyer le pointeur vers l'en-tête de la nouvelle liste chaînée.
Input : 1 -> 2 -> 3 -> 4 -> 5 -> NULL Output : 2 -> 3 -> 4 -> 5 -> NULL Input : 2 -> 4 -> 6 -> 8 -> 33 -> 67 -> NULL Output : 4 -> 6 -> 8 -> 33 -> 67 -> NULL
Dans le problème donné, nous devons supprimer le premier nœud de la liste, déplacer la tête vers le deuxième élément et renvoyer la tête.
Dans ce problème, nous pouvons déplacer la tête vers la position suivante puis relâcher le nœud précédent.
#include <iostream> using namespace std; /* Link list node */ struct Node { int data; struct Node* next; }; void push(struct Node** head_ref, int new_data) { // pushing the data into the list struct Node* new_node = new Node; new_node->data = new_data; new_node->next = (*head_ref); (*head_ref) = new_node; } int main() { Node* head = NULL; push(&head, 12); push(&head, 29); push(&head, 11); push(&head, 23); push(&head, 8); auto temp = head; // temp becomes head head = head -> next; // our head becomes the next element delete temp; // we delete temp i.e. the first element for (temp = head; temp != NULL; temp = temp->next) // printing the list cout << temp->data << " "; return 0; }
23 11 29 12
Il suffit de déplacer la tête vers l'élément suivant du programme, puis de supprimer l'élément précédent puis d'imprimer la nouvelle liste. La complexité temporelle globale du programme donné est O(1), ce qui signifie que notre programme ne dépend pas de l'entrée donnée, ce qui est la meilleure complexité que nous puissions atteindre.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!