如何修复此代码中的细分错误

时间:2019-04-25 06:53:09

标签: c

这是链表程序,没有错误,但输出未正确显示    没有错误,但我认为逻辑不能实现,而无需使用仅逻辑功能。

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

1 个答案:

答案 0 :(得分:1)

我看到的主要问题。

    head = NULL;

每次在for循环中,您都将head初始化为NULL。 您应该在声明时进行初始化。

struct node * head = NULL;

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

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