初始条件:1.带有头结点的链表 2。删除位置i 

基本操作:p指向某一个结点,可以删除它后面的那个结点 执行的操作是p->next=p->next->next 要删除第i个结点 就要找到第i-1个结点

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

初始化:1.p=L 指向头结点 2.j=1

寻找第i-1个结点 

  while( j<i ){
    p=p->next;

    j++;

  }

i的不同情况:1.i<1 此时p指向头结点 2. 1<=i<=length 正常执行 3.i=length+1 正常执行 p指向最后一个结点 3.i>length+1 会出现空指针异常

避免4出现的空指针异常 以及 3在后续操作会出现的空指针异常 加入条件 p->next 不为空

 

  while( j<i && p->next){
    p=p->next;

    j++;

  }

排除1,3,4:

  if(j>i || p->next){
    return ERROR;

  }

删除结点:

  p->next=p->next->next

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄