我是数据结构的初学者,我想知道如何在链表的末尾插入节点。 使用以下代码,我可以在开头和除链表末尾以外的任何其他位置插入节点。但是在最后插入节点时,我无法这样做。
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;
}
当我在最后插入节点时,它会给出以下输出 “位置超出范围。” 我有点理解为什么它会给出那个输出,但我无法找到我应该如何更改我的代码。 谢谢。
答案 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) 为真。