如何在此代码中修复分段错误[关闭]

问题描述 投票:0回答:1

这是链接列表程序没有错误,但输出没有正确显示没有错误,但我认为逻辑不正确实现这不使用功能只有逻辑是必需的。

struct node * c;
struct node * head;

int n, i = 0;
scan("%d", & n);
if (n < 10) {

    for (i = 0; i < n; i++) {

        struct node * p;
        p = (struct node * ) malloc(size of (struct node));

        scan("%d", & p - > data);
        p - > next = NULL;

        c = NULL;

        head = NULL;
        if (head == NULL) {
            head = p;
        } else {

            c = head;
            while (c - > next != NULL) {

                c = c - > next;
            }
            c - > next = p;
            print("%d", c - > next);

            struct node * d = head;
            while (d != NULL) {
                print("%d", d - > data);
                d = d - > next;
            }

        }
}

这是链表程序,我添加的代码部分不是整个块

如果输入10 20 30输出10-> 20-> 30,则预期结果

c
1个回答
1
投票

我看到的主要问题。

    head = NULL;

你每次在for循环中初始化headNULL。您应该在声明时进行初始化。

struct node * head = NULL;

将打印代码移到for循环之外。

    struct node * d = head;
    while (d != NULL) {
        print("%d", d - > data);
        d = d - > next;
    }
© www.soinside.com 2019 - 2024. All rights reserved.