链表程序崩溃



我正在使用结构体实现一个带有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;
}

您正在声明和调用Length(),因为它没有参数length = Length();

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

int Length(struct node* head)

这是合法的,但是实际的函数没有得到一个head参数来工作,这就是为什么它崩溃了。

你应该从Linked_list()返回head(目前没有返回任何东西),并将其提供给Length()

struct node* Linked_list() {
    ....
    printf("%d %d", head->data, second->data);
    return  head;
}

然后在main上:

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

可能还有其他问题

相关内容

  • 没有找到相关文章

最新更新