在下面的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;
}
}
答案 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
处无需打印。
您可能需要反过来构建初始化链。