gpt4 book ai didi

c - 链表程序崩溃

转载 作者:行者123 更新时间:2023-11-30 15:52:33 25 4
gpt4 key购买 nike

我正在使用结构实现一个包含 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使用参数,这就是它崩溃的原因。

您应该返回 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);

但可能还有其他问题。

关于c - 链表程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14346051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com