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

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

{算法步骤}

单链表基本操作--------删除第i个元素_第1张图片

单链表基本操作--------删除第i个元素_第2张图片 代码分析:

//删除第i个元素的结点
void deleteNode(LinkList &L,int i)
{
ND*P;      //创建指向ND类型的指针p
p = L;    //指向头结点
int j;    //计数器,用于计算访问到的结点数。
int e;    //变量e用于存放删除结点的数据。
while(p&&jnext;    // 寻找第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;//删除完成
}

你可能感兴趣的:(b站数据结构,数据结构)