链表 删除一个元素 若删除成功 返回true,且返回删除的元素。返回删除的元素可以将一个变量的地址传过去,在删除函数内部改变这个变量的值。链表删除某个位置的元素不用遍历整个链表 ,其实是p->pnext 不断往后移动,一直到要删除结点的前一个结点。
int delete_link(pnode pHead,int pos, int * returndata),pos 大于1。具体 程序如下:
bool delete_linknew(pnode pHead,int pos,int *deletedata){
pnode p=pHead->pnext;
int i=0;
while((p->pnext!=NULL)&&(i<(pos-2))){
p=p->pnext;
i++;
}
if(p->pnext==NULL||pos<0){
printf("删除链表位置不正确\n");
return false;
}
pnode save=p->pnext;
p->pnext=save->pnext;
*deletedata=save->data;
free(save);
return true;
}