2011-03-26 145 views
0

這是什麼意思?鏈接列表問題

void add(struct node **root, int x) 
{ 
     struct node *conductor; 
     if(*root==NULL) 
     { 
      (*root)=malloc(sizeof(struct node)); 
      (*root)->x=x; 
      (*root)->next=NULL ;   
     } 
     else 
     { 
      conductor = *root; 
      while(conductor->next!=NULL) 
      { 
       conductor = conductor -> next;    
      }     
      conductor->next=malloc(sizeof(struct node)); 
      conductor->next->x=x; 
      conductor->next->next=NULL; 
    } 
    } 

the conductor=Conductor->next;這是什麼意思?我需要餵我的好奇心,我想知道我的想法是否屬實

這是我的,我只是想確定如果我的想法是正確的,我一直懷疑我的代碼

+2

你以前的問題應該是關於「[你的]鏈表代碼」(引自你以前的問題的文本......),如果你不明白這個代碼,它怎麼可能是你的?做你的功課,停止複製/粘貼,並開始思考一點點,以瞭解編程! – 2011-03-26 15:30:04

+1

代碼看起來類似於此:http://www.cprogramming.com/tutorial/c/lesson15.html – mdegges 2011-10-23 01:01:00

+0

此外,如果你不明白它,就問它。當你試圖保持自己,或者像這樣向上時,你會放下自己。 – 2012-06-05 18:52:24

回答

1

鏈接列表由一系列對象構成,每個對象指向列表中的下一個元素。行conductor = conductor->next;只是將conductor變量(指向列表元素,struct node)更新爲指向列表中的下一個元素。

更新:關於linked-list的維基百科文章提供了這樣的數據結構的良好視覺表示。

+0

你可以提供任何圖形或圖案表示我的想法,它仍然模糊 – 2011-03-26 15:24:33

0

conductor -> next只是一種寫作方式(*conductor).next

由於導體是指向struct,你不能直接conductor.next訪問它的成員,在這種情況下,這意味着conductor現在將指向下一個元素的列表(一個conductor->next指出,前)

+0

我得到這個權利?導體=導體 - >下一個,會成爲頭部? – 2011-03-27 00:44:24

+0

它不會成爲名單的頭。頭部仍然是root,但while循環會使'conductor'指向最後一個節點(當然不包括NULL)。 – MByD 2011-03-27 00:48:40

+0

換句話說,while循環實際上是這樣說的:當導體不指向最後一個節點(conductor-> next!= NULL,意味着有另一個節點)使導體指向下一個節點。 – MByD 2011-03-27 00:50:44

0

conductor=*root設置指針導體以指向第一個元素列表中的根

conductor=conductor->next設置指針導體指向列表中的根的下一個元素。

與長度爲1的數組相比,第一行將設置一個指向數組第0個元素的指針,而下一行將指針指向1st元素。如果這沒有意義,那麼您應該閱讀鏈表,以及爲什麼使用它們與說數組相比。

0

根據你的要求:

conductor=conductor->next means that the means that the conductor will move 

下一個內存位置。

例如:

void insert(struct node **ptr) 
{ 
    struct node *tmp; 
    tmp=*ptr; 
    tmp=tmp->next; 
} 

TMP現在指向鏈表的起始內存的位置,因爲我們可以將指針指向任何地方,如果它不是一個常量指針。

tmp = tmp-> next表示它指向下一個依賴於編譯器的內存位置,如果指針的sizeof是4bytes,它將移動到4個字節。