单链表基本操作--------删除第i个元素

.删除--------删除第i个结点

{算法步骤}

 代码分析:

//删除第i个元素的结点
void deleteNode(LinkList &L,int i)
{
ND*P;      //创建指向ND类型的指针p
p = L;    //指向头结点
int j;    //计数器,用于计算访问到的结点数。
int e;    //变量e用于存放删除结点的数据。
while(p&&j<i-1)  //判断是否不为空表,和计数点小于要删除的结点的前一个结点
{
 p  = p->next;    // 寻找第i个结点,并使p指向其前驱
j++;
}
if(p = NULL||j>i - 1)
return error   //查找错误,删除位置不合理
else
{
ND*q;   //创建指向ND类型的指针q
q = p->next;//q指向第i个点(删除点)//临时保存被删除点的地址以备释放
p = q ->next;//p指向第i+1个点(删除点后面的点)//改变删除结点的前驱结点的指针域
e = q->data;//将q中data的部分存放在变量e中  //保存删除结点的数据域
free(q);//释放结点q   //释放删除结点的空间
}
return ok;//删除完成
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值