
上面介绍了,在一个节点之后插入节点的情况。这是通常的情况。如果要向一个链表的头部插入节点,就只需要将新节点的下一个指针指向链表的头指针即可。
在这种情况下,有两点要注意:
1,链表是否为空链表
2,要插入的节点是不是空指针。
代码实现:
//向单链表中插入一个节点(插入在链开始处)
//输入参数:单链表的头指针和要插入的节点指针
//输出参数:无
//返回值:指向单链表的头指针
SingleList* Insert(SingleList *head,SingleList *node)
{
if(node == NULL)
{
return head
}
else if(head == NULL)
{
return node
}
node->next = head
head = node
return head
}
node*insert(node
*head,node
*p)
//
结点也要传指针
node
*p
{
node
*p1,*p2
if(head->data>=p->data){
p->next=head
head=p
return(head)}
p2=p1=head
while(p2->next&&p2->data<p->data)//循环结束的条件是p2指向尾结点或找到不小于
p
中数据的结点。
{
p1=p2
p2=p2->next
}
//此时,p2已经指向要插入的位置,只需将p结点插入到p2之后即可。
//if(p2->data<p-data){
无需此判断了。
p2->next=p
p->next=p2->next}
//改为这样。这里不是
判断表
尾,是插入p结点。
/*else{
同样无必要。
p->next=p2
p1->next=p
}
*/
return(head)
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)