我使用结构实现了一个包含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;
}
答案 0 :(得分:1)
您正在声明并致电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);
但可能还有其他问题。