单链表的删除---在链表中删除值为x的元素 和 往链表中i位置插入一个数x的操作

单链表的删除:通过图来看思路

p指针用来找链表中数字为x的位置,pre指针始终指向p指针所指向位置的前一个位置

最好自己在纸上模拟一下

代码:

#include<bits/stdc++.h>
using namespace std;
typedef struct Node
{
    int value;
    struct Node *next;
}node,*linkedlist;
linkedlist linkedlistdelete(linkedlist l,int x)
{
    node *p=(node *)malloc(sizeof(node));
    p=l->next;//p指针就代表链表的第一个节点,然后p指针往下走
    node *pre=(node *)malloc(sizeof(node));//必须维护pre指针,pre指针始终指向的是p指针指向的节点的前一个节点
    while (p->value!=x)//只要p指针指向的节点的数字不等于x,p指针就往下走
    {
        pre=p;
        p=p->next;
    }
    pre->next=p->next;//程序到这了,说明找到了数字为x的节点了,pre指向的是这个节点的前一个节点,让该节点的下一个节点直接等于数字等于x节点的下一个节点
    free(p);//把数字等于x的节点释放掉
    return l;
}

往单链表i位置插入一个数x  通过图看思路

 

pre指针作用是到达链表中的指定位置,即i位置  p指针(这里叫指针不太准确)为新加的链表结构

代码:

#include<bits/stdc++.h>
using namespace std;
typedef struct Node
{
    int value;
    struct Node *next;
}node,*linkedlist;
linkedlist linkedlistinsert(linkedlist l,int i,int x)//指针l指向的是链表的第一个节点(指针l并不是链表中的第一个节点,只是指向链表的第一个节点),i表示加入到链表中的i位置,x表示要加入的数
{
   node *pre=(node *)malloc(sizeof(node));//定义pre指针用来找出链表中的i位置
   pre=l;//刚开始让pre指针指向链表中的第一个节点的位置。注意:这里是地址与地址之间的赋值。
   int index;
   for(index=1;index<i;i++)//通过这个for循环可以使pre成功指向链表中的i位置
        pre=pre->next;//让pre指针指向pre现在指向节点的下一个节点
   node *p=(node *)malloc(sizeof(node));//新建一个节点
   p->value=x;
   p->next=pre->next;//让新建的节点p指向i位置节点的下一个节点
   pre->next=p;//pre节点(原先i位置上的节点)指向新建的p节点
   return l;
}

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值