//带表头结点的链表插入和删除不用考虑有无前驱指针
//设数据域值不重复,删除值为key的结点
void Delkeynode(ElemSN *h,int key)
{
ElemSN *p,*del;
for(p=h;p->next&&p->next->data!=key;p=p->next);
if(!p->next){
printf("Not Found!\n");
}
else{//找到要删的结点
del=p->next;
p->next=del->next;
free(del);
}
}
//设head指向一个非空带表头结点的单向链表,其数据域的值重复且无序,任意输入一个关键字key,删除链表中值为key的结点
void Delsamenode(ElemSN *h,int key)
{
ElemSN *p,*del;
for(p=h;p->next;){
if(p->next->data!=key){
p=p->next;
}
else{//找到要删的结点
del=p->next;
p->next=del->next;
free(del);
}
}
}