一、【问题描述】
查找链表C(带头结点)中是否存在一个值为x的结点,若存在,则删除该结点并返回1,否则返回0
二、【问题分析】
对于本题需要解决两个问题:一个是要找到值为x的结点,另一个是将找到的结点删除。即链表中结点的查找。为了实现查找,定义一个结点指针变量p,让它沿着链表一直走到表尾, 每遇到一个新结点就检测其值是否为x,是则证明找到,不是则继续检测下一个结点,当找到值为x的结点后就删除该结点。
三、【问题解答】
Talk is cheap,show you the code:
int findAndDelete(LNode *C,int x){
LNode *p,*q;
p=C;
while(p->next!=NULL){
if(p->next->data=x){
break;
}
p=p->next;
}
if(p->next==NULL){
return 0;
}
else{
q=p->next;
p->next=p-next-next;
free(q);
return 1;
}
}