void DeleteList(LinkList head,char *key)
{
ListNode *p,*r,*q=head;
p=LocateNode(head,key); //按key值查找结点的
if (p) //p不为NULL表示查找成功
{
r=p->next; //取出待删p的下邻节点r
while( q->next!=p ) ) //找到p的上邻节点q
q=q->next; //扫描下一个结点
free(p); //释放删除节点p
q->next = r; //使p的上邻节点与下邻节点重新链接起来
}
}
看着分不少。解释全在注释里了.