如何在链表末尾插入节点?

时间:2021-02-20 13:02:25

标签: c data-structures linked-list singly-linked-list

我是数据结构的初学者,我想知道如何在链表的末尾插入节点。 使用以下代码,我可以在开头和除链表末尾以外的任何其他位置插入节点。但是在最后插入节点时,我无法这样做。

void Insert(NODE *head,int n,int pos)
{
     NODE  *temp, *newnode;
     int i;
     for(temp = head, i = 1; ( temp != NULL ) && ( i <= pos-1 ); i++)
     {

         if(temp->next==NULL)
         {
             printf("\nPosition is out of range.\n\n");
         }
         

     }
          newnode = (NODE*)malloc(sizeof(NODE));
          newnode->info = n;
          newnode->next = temp->next;
          temp->next = newnode;
}

当我在最后插入节点时,它会给出以下输出 “位置超出范围。” 我有点理解为什么它会给出那个输出,但我无法找到我应该如何更改我的代码。 谢谢。

1 个答案:

答案 0 :(得分:0)

评论你的代码:

for(temp = head, i = 1; ( temp != NULL ) && ( i <= pos-1 ); i++)
{

     if(temp->next==NULL) // Adding at the end means that you add when
                          // temp-> next is NULL
     {
         printf("\nPosition is out of range.\n\n");
     }
     

 }

例如,如果您在列表中插入 1 个元素并在位置 2 处插入,则 (i <= pos-1) 为真且 (temp->next==NULL) 为真。