.删除--------删除第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;//删除完成
}