2017-04-12 4 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構造体を定義することなく、ヘッドのノードへのポインタを使用することができます。

だから、空のリストについては、あなたが持っているでしょう:1ノードとのリストについては

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; 
} 
関連する問題