C语言 在链表的末尾插入一个元素



传递列表头部时,"在简单链表的末尾插入元素"的实现中的问题是什么?

void insert (int x, cel *ini) {
    cel *tmp = ini;
    while (tmp != NULL)
        tmp = tmp->prox;
    cel *new = malloc(sizeof(cel));
    new->value = x;
    tmp->prox = new;
    new->prox = NULL;
}

应该可以:

void insert (int x, cel *ini) {
   cel *tmp = ini;cel *left;
   while (tmp != NULL)
   { 
       left = temp;
       tmp = tmp->prox;
   }
   cel *new =(cel*) malloc(sizeof(cel));
   new->value = x;
   left->prox = new;
   new->prox = NULL;
}

检查tmp为空,然后添加tmp->prox=new。但问题是,当前的温度是NULL。您需要从temp的前一个节点指向新节点。

将while循环中的条件替换为:

while(tmp->prox!=NULL)

它将工作得很好,因为你必须到达当前链表的最后一个节点,该节点指向NULL。

但是您需要添加以下条件来检查ini是否为NULL,为此,在循环之前添加以下:

if(ini==NULL)
{
cel *new = malloc(sizeof(cel));
new->value = x;
new->prox = NULL;
ini=new;
 }

你的程序正在做的是到达NULL(你的程序的tmp是NULL)

相关内容

  • 没有找到相关文章

最新更新