【发布时间】:2016-04-10 10:27:55
【问题描述】:
在《C 语言数据结构基础》教科书中, (由 Horowitz Sahni Anderson-Freed 撰写)
他们提供以下代码
作为插入节点的方法
在链表中的某个任意节点 x 之后:
void insertNode(nodePtr *listPtr, nodePtr insertLoc, int data)
{
nodePtr temp = (nodePtr)malloc(sizeof(*temp));
temp->data = data;
if(*listPtr) // not empty
{
temp->next = insertLoc->next;
insertLoc->next = temp;
}
else //empty
{
temp->next = NULL;
*listPtr = temp;
}
}
因此,以下调用将导致:
nodePtr head = NULL;
insertNode(&head,head,10); // 10
insertNode(&head,head,20); // 10 -> 20
insertNOde(&head,head,30); // 10 -> 30 -> 20
我的问题: 如何在列表的前面插入一个节点?
【问题讨论】:
-
没有给定的功能。 (显而易见的方式是
temp->next = *head; *head = temp;) -
@wildplasser 我知道评论发布后很长时间了,但是你怎么把 *head (这是一个节点)分配给 temp->next(这是一个 nodePtr) ,不是这两个不兼容?
标签: c insert linked-list