我正在使用结构体实现一个带有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);
可能还有其他问题