2010-12-07 17 views
3

リンクリストを使用するCプログラムを書く必要があります。私はリストを作成し、リストに要素を追加しました。しかし、私はどのようにリストのすべての要素を印刷するのか分からない。リストは文字列のリストです。私は何とかリストをインクリメントして、そこにあるすべての文字列を印刷すると考えましたが、これを行う方法を理解することはできません。C、リンクされた文字列リストを印刷

ショート:linked listを印刷するにはどうすればよいですか?

+3

があなたの本当の問題のような音は、「私はリンクリストを反復処理を行うにはどのように」とは? – Cascabel

+3

Jefromiの質問へのフォローアップは2つの部分に分かれています:1)最初のノードの内容を印刷できますか?2)2番目のノードへのリンクを得ることができますか? – dmckee

+1

本当にリンクリストに使用するデータ構造に依存していますが、これまでのコードを表示できますか? Btw、これが宿題の場合は、そのようにタグ付けする必要があります。 –

答えて

10

愚かな質問はありませんです。

def printAll (node): 
    while node is not null: 
     print node->payload 
     node = node->next 

printAll (head) 

それは本当に、ただペイロードをプリントアウトし、リスト内の次のノードに移動し、ヘッドノードで起動します:ここでは、始めるためにいくつかの擬似コードです。

次のノードがリストの末尾になったら、停止します。これはあなたが探しているものであれば


まあ、実際には、おそらくがあり、が、これは私はかなりよく分からない

+0

ありがとう、私は今何をすべきかの良い考えがあると思う。 –

0

:-)そのうちの一つではありません、通常はあなたのDSにpHead(最初の要素へのポインタ)を格納し、文字列ノードの次のアドレスを取得する関数を実装します。

次のアドレスがNULL(尾に達したことを意味します)まで、これを行います。

3

ポインタを使用してリンクリストを反復することができます。擬似コード:

tempPointer = head 

while(tempPointer not null) { 
    print tempPointer->value; 
    tempPointer = tempPointer->next; 
} 
1

擬似コード: - 正確なことです

struct list 
{ 
    type value; 
    struct list* pNext; 
} 

void function() 
{ 
    struct list L; 
    // .. element to L 

    // Iterate each node and print 
    struct list* node = &L; 

    do 
    { 
    print(node->value) 
    node = node->next; 
    } 
    while(node != NULL) 
} 
関連する問題