0

リストをトラバースし、リンクされたリストの構造体の値を出力するメソッドを含むリンクされたリストがあります。

void testLinkedList(LinkedList* list)
    {
        int count = 1;
        LinkedListNode* current = list->head;
        while (current != NULL)
            {
                printf("%d: Label is is %d\n", count, current->data->label);
            current = current->next;
                count++;
            }
        }

ループで何か間違ったことをしましたか? 最後のノードに到達すると終了するはずですが、許可されている限り、ループしてファントム番号を出力し続けます。

編集:これは、リンクされたリストに送信するために使用するinsertlast()関数です:

void insertLast(LinkedList* list, TinCan* newData)
    {
        int ii = 1;
    LinkedListNode* newNode = (LinkedListNode*)malloc(sizeof(LinkedListNode));
    newNode->data = newData;

    //check if queue empty
    if(list->head == NULL)
        {
        list->head = newNode;
        newNode->next=NULL;
        }
    else
        {
        LinkedListNode* current = list->head;
        while (current->next != NULL)
            {
            current = current->next;
            }
        current->next = newNode;
        printf("%d", ii);
        ii++;
        }
}
4

3 に答える 3

4

新しいリスト ノードを作成するときに、次のポインターを NULL に設定するのを忘れました。

LinkedListNode* newNode = (LinkedListNode*)malloc(sizeof(LinkedListNode));
    newNode->data = newData;
    newnode->next = NULL;

ところで: ソースの残りの部分は、この関連トピックにあります。

于 2013-05-02T07:07:02.930 に答える
1

この方法は正しいです。各ノードが次のノードに正しく接続されていること、および最後のノードが NULL に接続されていることを確認してください。

于 2013-05-02T07:06:54.467 に答える