链表打印功能不起作用
linked list print function is not working
此程序运行无误,但不打印任何内容。我无法找出错误。
我正在学习 C 语言的数据结构,这是学习数据结构的好习惯吗?
提前致谢!!!!!!
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}list_node;
list_node* push(list_node* head_r, int new_data)
{
list_node* new_Node = (list_node*)malloc(sizeof(list_node));
new_Node->data = new_data;
new_Node->next = head_r;
head_r = new_Node;
return head_r;
}
void Print(list_node* head_r)
{
while(head_r)
{
printf("%d\n", head_r->data);
head_r = head_r->next;
}
}
int main()
{
list_node* l_list = NULL;
push(l_list, 1);
push(l_list, 2);
push(l_list, 6);
push(l_list, 8);
push(l_list, 7);
push(l_list, 3);
push(l_list, 4);
printf("Given linked list \n");
Print(l_list);
return 0;
}
更改 main
函数中的这些行:
l_list = push(l_list, 1);
l_list = push(l_list, 2);
l_list = push(l_list, 6);
l_list = push(l_list, 8);
l_list = push(l_list, 7);
l_list = push(l_list, 3);
l_list = push(l_list, 4);
您使用 push
返回了一个新节点,但没有在任何地方保存,所以您在 main
中的列表总是空的。
您的列表为空,因为未使用推送返回值
你的主应该是这样的:
int main()
{
list_node* l_list = NULL;
l_list = push(l_list, 1);
l_list = push(l_list, 2);
l_list = push(l_list, 6);
l_list = push(l_list, 8);
l_list = push(l_list, 7);
l_list = push(l_list, 3);
l_list = push(l_list, 4);
printf("Given linked list \n");
Print(l_list);
return 0;
}
或者您可以通过引用传递列表,此时您的代码如下所示:
void push(list_node** head_r, int new_data)
{
list_node* new_Node = (list_node*)malloc(sizeof(list_node));
new_Node->data = new_data;
new_Node->next = *head_r;
*head_r = new_Node;
}
int main()
{
list_node* l_list = NULL;
push(&l_list, 1);
push(&l_list, 2);
push(&l_list, 6);
push(&l_list, 8);
push(&l_list, 7);
push(&l_list, 3);
push(&l_list, 4);
printf("Given linked list \n");
Print(l_list);
return 0;
}
此程序运行无误,但不打印任何内容。我无法找出错误。
我正在学习 C 语言的数据结构,这是学习数据结构的好习惯吗?
提前致谢!!!!!!
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}list_node;
list_node* push(list_node* head_r, int new_data)
{
list_node* new_Node = (list_node*)malloc(sizeof(list_node));
new_Node->data = new_data;
new_Node->next = head_r;
head_r = new_Node;
return head_r;
}
void Print(list_node* head_r)
{
while(head_r)
{
printf("%d\n", head_r->data);
head_r = head_r->next;
}
}
int main()
{
list_node* l_list = NULL;
push(l_list, 1);
push(l_list, 2);
push(l_list, 6);
push(l_list, 8);
push(l_list, 7);
push(l_list, 3);
push(l_list, 4);
printf("Given linked list \n");
Print(l_list);
return 0;
}
更改 main
函数中的这些行:
l_list = push(l_list, 1);
l_list = push(l_list, 2);
l_list = push(l_list, 6);
l_list = push(l_list, 8);
l_list = push(l_list, 7);
l_list = push(l_list, 3);
l_list = push(l_list, 4);
您使用 push
返回了一个新节点,但没有在任何地方保存,所以您在 main
中的列表总是空的。
您的列表为空,因为未使用推送返回值
你的主应该是这样的:
int main()
{
list_node* l_list = NULL;
l_list = push(l_list, 1);
l_list = push(l_list, 2);
l_list = push(l_list, 6);
l_list = push(l_list, 8);
l_list = push(l_list, 7);
l_list = push(l_list, 3);
l_list = push(l_list, 4);
printf("Given linked list \n");
Print(l_list);
return 0;
}
或者您可以通过引用传递列表,此时您的代码如下所示:
void push(list_node** head_r, int new_data)
{
list_node* new_Node = (list_node*)malloc(sizeof(list_node));
new_Node->data = new_data;
new_Node->next = *head_r;
*head_r = new_Node;
}
int main()
{
list_node* l_list = NULL;
push(&l_list, 1);
push(&l_list, 2);
push(&l_list, 6);
push(&l_list, 8);
push(&l_list, 7);
push(&l_list, 3);
push(&l_list, 4);
printf("Given linked list \n");
Print(l_list);
return 0;
}