c - 链表程序运行不正常

标签 c struct linked-list append singly-linked-list

给定的程序没有显示链表的所有元素。 我在识别错误​​时遇到问题。

起初我用一个空值初始化了头部,然后创建了一个临时变量并为它分配了一个整数值和指向下一个节点的指针。 然后我创建了另一个名为 temp1 的节点并将其与头部链接。 只有当“i”等于 1 时才会链接。

然后将 temp1 等同于下一个节点并执行相同的操作。

//链表 //插入节点。

#include <stdio.h>

struct node
{
    int n;
    struct node *next;
};

struct node *head;

int main ()
{
    int i, s, x, y;
    i = 0;
    struct node *temp;
    struct node *temp1;
    struct node *cur;
    head = NULL;
    scanf ("%d", &s);     //No. of nodes.
    while (i < s)
    {
        scanf ("%d", &x);
        if (head == NULL)
        {
            temp = (struct node *) malloc (sizeof (struct node));
            temp->n = x;
            temp->next = NULL;
            head = temp;
        }
        else
        {
            temp = (struct node *) malloc (sizeof (struct node));
            temp->n = x;
            temp->next = NULL;
            temp1 = temp;
            if (i == 1)
            {
                head->next = temp1;
            }
            temp1 = temp1->next;  //Assigning the next node.i.e. NULL value
        }
        i = i + 1;
    }
    cur = head;
    while (cur != NULL)
    {
        printf ("%d", cur->n);
        cur = cur->next;
    }
    return 0;
}

最佳答案

检查以下更改的部分

    {
      temp = (struct node *) malloc (sizeof (struct node));
      temp->n = x;
      temp->next = NULL;
      head = temp;
      temp1 = head;
    }
      else
    {
      temp = (struct node *) malloc (sizeof (struct node));
      temp->n = x;
      temp->next = NULL;
      temp1->next = temp;
      temp1 = temp1->next;  //Assigning the next node.i.e. NULL value
    }

而不是依赖

   if (i == 1) {
      head->next = temp1;
   }

我在创建 head 时将 head 分配给 temp1,这意味着只在第一次发生。

您的 else 部分也存在一些链接问题。

关于c - 链表程序运行不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57825424/

相关文章:

c++ - 双链表及其删除

c - LinkedList在C中删除结束

c - 当硬件中已经有固件时,为什么还需要设备驱动程序?

c++ - 如何将函数作为参数传递给参数?

c++ - amp - C++ 助手

c - 链表的结构与存储中的常见结构相比有什么特别之处吗?

c - 通过引用将静态二维结构数组传递给函数

c - 使用 PrintWindow 渲染 chrome

c - 如何在C中制作一个结构数组?

链表的C++继承