0

我正在使用结构实现一个包含 3 个元素的链表。在我介绍计算链表中元素数量的函数之前,它工作正常Linked_list。以下是 C 语言程序的代码。

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();

但是当你定义它时,它确实有一个参数:

int Length(struct node* head)

这是合法的,但实际发生的情况是实际函数没有使用head参数,这就是它崩溃的原因。

您应该headLinked_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 回答