为什么我不能打印链表成员的值?

时间:2017-01-26 07:55:08

标签: c linked-list

在下面的C代码中,我创建了一个链表和一个打印成员int值的函数。我在main中创建了一些示例成员,但是没有打印出来,我无法找出原因。

#include <stdio.h>
#include <stdlib.h>

typedef struct node * ptr;
typedef struct node {
  int data;
  ptr next;
} item;

void printList(ptr p);

int main() {
  item h1 = {12, NULL};
  item h2 = {13, h1.next};
  item h3 = {14, h2.next};
  printList(h3.next);
}

void printList(ptr p) {
  while(p) {
    printf("%d -> \n", ptr -> data);
    ptr = ptr -> next;
  }
}

3 个答案:

答案 0 :(得分:2)

您的初始化错误。

 item h2 = {13, h1.next};

初始化h2 next成员指向next h1 NULL成员的内容,即h3#include <stdio.h> typedef struct node { int data; struct node *next; } item; void printList(item *p); int main(void) { item h1 = {12, NULL}; item h2 = {13, &h1}; item h3 = {14, &h2}; printList(&h3); } void printList(item *p) { while(p) { printf("%d -> \n", p->data); p = p->next; } } 相同。

14 -> 
13 -> 
12 -> 

<强>输出

typedef

旁注: 避免使用application = Flask(__name__, static_folder=None) 隐藏指针,如果代码在很多层中增长很多,则难以理解代码。

答案 1 :(得分:1)

更改此代码

item h1 = {12, NULL};
item h2 = {13, h1.next};
item h3 = {14, h2.next};

以下将解决您的问题

item h1 = {12, NULL};
item h2 = {13, &h1};
item h3 = {14, &h2};

答案 2 :(得分:1)

h3.next初始化为h2.next,初始化为h1.next,初始化为NULL,因此所有这些都为NULL
显然,在NULL处无需打印。

您可能需要反过来构建初始化链。