2013-06-04 145 views
-3
#include <stdio.h> 
#include <stdlib.h> 

struct llnode { 
    int data; 
struct llnode *next; 
}; 
void insert (struct llnode **head, int data); 


int 
main() { 
    struct llnode *head; 
    head = NULL; 
    printf("starting\n"); 
    insert(&head, 4); 



    return 0; 
} 

void 
insert (**struct llnode **head**, int data) {--> why do we use a pointer to a pointer 
    printf("insert %0d\n", data); 

struct llnode *l = malloc(sizeof(struct llnode)); 
    l->data = data; 
    l->next = NULL; 

    if (*head == NULL) { 
     *head = l; 
    } else { 
struct  llnode *tmp = *head; 
     while (tmp->next != NULL) { 
      tmp = tmp->next; 
     } 
     tmp->next = l; 
    } 
} 

1)爲什麼我們要使用指向指針的指針。可以用一個例子來解釋嗎? 2)如何插入雙向鏈表? 請給我解釋一下如何打印爲什麼我們使用指針指針

+0

你讀過這[wiki](http://en.wikipedia.org/wiki/Doubly_linked_list)了嗎? – mvp

+1

我們爲什麼要使用指針? –

回答

1

指向指針或雙指針的指針是其可能值是其他指針變量的存儲地址的變量。

您有一個很好的答案here,我認爲他可以比我更好地解釋它。

你也可以檢查這個link

+0

請注意,只有鏈接的答案是不鼓勵在SO上,特別是僅鏈接到其他SO答案。 – mvp

2

當您想要傳遞函數可以更改的指針時,通常會使用指向指針的指針。