0

構造体を使用して 3 つの要素を持つリンク リストを実装していました。連結リストの要素数を計算する関数を導入する前は問題なく動作していましたLinked_list。以下は、C でのプログラムのコードです。

#include <stdlib.h>
#include <stdio.h>

struct node{
    int data;
    struct node* next;
};

struct node* Linked_list();

int Length();

int main()
{
    int length;
    Linked_list();
    length = Length();
    printf("%d", length);
}

struct node* Linked_list() {
    struct node* head = NULL;
    struct node* second = NULL;
    struct node* third = NULL;

    head = malloc(sizeof(struct node));
    second = malloc(sizeof(struct node));
    third = malloc(sizeof(struct node));

    head->data = 1;
    head->next = second;

    second->data = 2;
    second->next = third;

    third->data = 3;
    third->next = NULL;

    printf("%d %d", head->data, second->data);
}

int Length(struct node* head){
    struct node* current = head;
    int count = 0;

    while(current!=NULL)
    {
        count++;
        current = current->next;
    }
    return count;
}
4

1 に答える 1

1

パラメータがなかったため、宣言して呼び出しLength()ていますlength = Length();

しかし、それを定義すると、1つのパラメーターがあります。

int Length(struct node* head)

これは合法ですが、実際の関数が動作するパラメーターを取得しないため、headクラッシュします。

(現在何も返さない)headから戻り、それをにフィードする必要があります。Linked_list()Length()

struct node* Linked_list() {
    ....

    printf("%d %d", head->data, second->data);
    return  head;
}

そしてメインで:

struct node* head = Linked_list();
length = Length(head);

ただし、他の問題がある可能性があります。

于 2013-01-15T20:16:25.660 に答える