2017-04-12 39 views
1

這段代碼來自我在學校爲數據結構模塊工作的任務。這個代碼在問題中提供,我無法理解這一點。鏈接列表定義

typedef struct _listnode { 
    int item; 
    struct _listnode *next; 
} ListNode; // You should not change the definition of ListNode 

typedef struct _linkedlist { 
    int size; 
    ListNode *head; 
} LinkedList; // You should not change the definition of LinkedList 

我很困惑,因爲我的演講幻燈片和我一直在檢查的網站剛剛定義了節點,而不是第二個節點。

任何人都可以幫助我嗎?

回答

1

LinkedList是一個通過保持其頭部及其大小來表示鏈表的結構,而列表中的每個節點由結構ListNode表示。如果你想保持鏈表的大小,這是一個常見的範例,在這種情況下,你可以很容易地獲得列表中的節點數量,而無需遍歷它。另一方面,如果不考慮大小,則可以只使用指向節點的指針,而不必定義結構體LinkedList

所以對於空單,你會:

LinkedList list = (struct LinkedList){0, NULL}; 

對於一個節點列表:

ListNode node; 
node.item = 0; 
node.next = NULL; 
list.head = &node; 
list.size = 1; 
+0

所以,如果我想編寫一個函數來將數據插入到列表中,我不得不創建一個使用結構ListNode新的節點? @fluter –

+0

:@JeromePapalie是的。 LinkedList表示整個列表,ListNode表示列表中的單個項目。 – JeremyP

+0

是的,那是ListNode的。 – fluter

0

鏈表使用本地指針變量指向第一個舉行列表中的項目。如果該指針也是NULL,那麼該列表被認爲是空的。

include <stdio.h> 

int main() { 
    typedef struct node { 
     int val; 
     struct node * next; 
    } node_t; 


return 0; 
}