2016-07-14 22 views
0

In diesem Programm kann ich nicht * Kopf = * Kopf-> nächste in der Kopfzeile wechseln?Zeiger auf Zeiger in C++

Dies ist ein geeksforgeek Algorithmus ...

Oder mir bitte schlagen einige gute Tutorials Hinweise zu lernen

void deleteNode(struct node **head_ref, int key) 
{ 
    // Store head node 
    struct node* temp = *head_ref, *prev; 

    // If head node itself holds the key to be deleted 
    if (temp != NULL && temp->data == key) 
    { 
     *head_ref = temp->next; // Changed head 
     free(temp);    // free old head 
     return; 
    } 

    // Search for the key to be deleted, keep track of the 
    // previous node as we need to change 'prev->next' 
    while (temp != NULL && temp->data != key) 
    { 
     prev = temp; 
     temp = temp->next; 
    } 

    // If key was not present in linked list 
    if (temp == NULL) return; 

    // Unlink the node from linked list 
    prev->next = temp->next; 

    free(temp); // Free memory 
} 
+0

Ich denke '* Kopf = * Kopf-> nächste sollte funktionieren, haben Sie es versucht? Aber Temp dient auch anderen Zwecken – keyser

Antwort

0

Sie *head_ref = *head_ref->next verwenden können.

Aber es ist mit temp getan, nur um die Dinge klar zu halten. Es würde wenig vage aussehen, wenn Sie temp->data vergleichen und dann mit *head_ref löschen.

Wenn Sie *head_ref verwenden möchten, können Sie den Code ändern, damit er klarer aussieht. wie,

// If head node itself holds the key to be deleted 
if (*head_ref != NULL && *head_ref->data == key) 
{ 
    *head_ref = *head_ref->next; // Changed head 
    free(temp);     // free old head 
    return; 
} 
+0

Dies wird nicht funktionieren, aber ich habe die Lösung (* Kopf) -> nächste. Ohne Halterung wird nicht funktionieren –