C语言—链表的插入

                    链表插入的基本思想


上一个博客我们已经了解,链表的的查找,那么插入应该挺好理解的吧,我们已经


可以定位到它的前驱结点,然后改变它的前驱结点的值,让它指向需要插入的结构


体,然后把原始的前驱结点的NEXT赋值给你新插入进来的结构体,然后就完了。。


  对 这就完了。。。



q指针是查找返回的值,p指针是新开辟地址,红色是初始指向,蓝色是程序结束的指向。



if (q == NULL)  //新点插入到头结点的后面(原来第一个有效节点前面)
{  
p->next = head->next;

head->next = p;
}
else if (q->next==NULL)  //指定点不存在,应补充在链表的后面。
{
        p->next = q->next;
q->next = p;
}
else
{
p->next = q->next;
q->next = p;
}
        这段3段程序明显都是一个算法,可以进行简化,
        if (NULL == pro)
{
q = head;
}
p->next = q->next;
q->next = p;


这个程序对照着图应该很容易看懂


        然后结束了。。。。。


程序实现




void insert(point *head)   //采用左插入节点方式
{
int newrows;
int newcols;
int oldrows;
int oldcols;
point *p;
point *pro;
showtopic("\n当前坐标如下,请参考插入位置进行左插入\n");
showpoints(*head);
showtopic("\n请输入将要插入的位置\n");
scanf("%d %d", &oldrows, &oldcols);
fflush(stdin);
pro = found(*head, oldrows, oldcols);
showtopic("\n请输入你要插入的数据\n");
scanf("%d %d", &newrows, &newcols);
fflush(stdin);
p = create(newrows, newcols);
if (NULL == pro)
{
pro = head;
}
p->next = pro->next;
pro->next = p;
}



  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值