单链表的插入

单链表第i个数据插入结点的算法思路:
1.声明一结点p指向链表头结点,初始化j从1开始;
2.当j<i时,就遍历链表,让p的指针向后移动,不断指向下一结点,j累加1;
3.若到链表末尾p为空,则说明第立个元素不存在;否则杳找成功,在糸统中生成一个空结点S
4.将数据元素e赋值给s->data;然后单链表的插入语句;

//假设存储元素e的节点为s,要实现s插入到ai和ai+1之间,C语言代码实现
 s->next= p->next;
 p->next =s;          //这两个语句不能调换
1
2
3


typedef int Status;
//可以用C语言结构指针来描述单链表:
typedef struct Node
{
    ElemType data;   //数据城
    struct Node*Next;//指针域
}Node;
typedef struct Node* LinkList;
LinkList p;
Status DeletElemLinklist(LinkList l,int i, int  e)
{
    int j;
    LinkList s;
    p=p->Next;            //p指向表头
    for (j = 1; j < i; ++j)
    {
        p=p->Next;        //p指向第i个节点
        if (p==Null)
        {
            return err;
        }
    }
    s=(LinkList)malloc(sizeof(Node));    //自己给结构体指针申请内存,
                                        //因为CPU会为这个指针开辟内存,
                                        //但是此时这个大小是4(如果是32位的CPU的话)
                                        //所以这个空间不足以存储结构体的数据成员,就会引发错误

    
    s->data=e;
                                        
    s->Next= p->Next;
     p->Next =s;          //这两个语句不能调换
     
     return success;
}
————————————————
版权声明:本文为CSDN博主「E-C-E」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42050661/article/details/100119801

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值