数据结构论坛

首页 » 分类 » 分类 » 带你认识数据结构线性链表的删除操作
TUhjnbcbe - 2025/2/17 18:46:00

在文章中,作者介绍了线性链表的插入操作,并且展示了示例代码。

在本篇文章中,作者将介绍线性链表的按位序删除操作,同时对代码进行分析。

通过文章我们知道,线性链表的按位序插入操作本质上其实线找到第i-1个结点,将新插入节点s的next指针指向第i个节点,同时将第i-1个结点的next指针指向s结点。

那么按位删除操作是怎么样的呢?其实它的实现与插入操作是非常类似的,首先,我们需要找到第i-1个结点,之后将其指针指向第i+1个结点,最后用e返回第i个结点的值并释放第i个结点。

原始链表

接下来我们就来看看如何用c++代码来实现线性链表的删除操作:

将第i-1个结点指向第i+1个结点

boolListDelete(LinkListl,inti,inte){

  if(i1){

    returnfalse;

    //TODO

  }//判断插入位置i,若小于1则其不合法

  Node*p;//当前扫描的结点

  p=l;

  intj=0;//当前p指向的是第几个结点

  while(p!=NULLji-1){//循环找到第i-1个结点

    p=p-next;

    j++;

    //TODO

  }

  if(p==NULL){//若p为空,则i值不合法

    returnfalse;

    //TODO

  }

释放掉需删除结点

  if(p-next==NULL){//若p的下一个结点为空,代表第i-1个结点后没有其它结点

    returnfalse;

    //TODO

  }

  Node*q=p-next;//令q指向要被删除的结点

  e=q-data;//将q的值赋给e

  p-next=q-next;//将*q从链表中断开

  free(q);//释放q结点

  returntrue;

}

本篇文章到此就结束了,如果大家有什么问题,欢迎在下方留言,讨论。

1
查看完整版本: 带你认识数据结构线性链表的删除操作