链表打印功能不起作用

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; 
}