数据结构3-关于链表的删除算法自己的思考

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

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

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

寻找第i-1个结点 

  while( j    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( jnext){
    p=p->next;

    j++;

  }

排除1,3,4:

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

  }

删除结点:

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

 

你可能感兴趣的:(数据结构3-关于链表的删除算法自己的思考)