数据结构简单 单链表删除节点问题

来源:百度知道 编辑:UC知道 时间:2024/06/26 01:37:18
我知道怎样删除一个已知节点的后继节点,不知道怎么删除节点本身,哪位高手来指点一下。
原题是删除一链表中所有值为k的节点,我思路是找到值为k的节点,然后再删除它,不过好像不好删除它本身,
本人还是新手,是不是有别的方法,恳请哪位高手指点一二

//---------函数的声明-------------------

void delnode(LinkList *head, LinkList p); //删除节点

//-------函数部分-----------------------------

void delnode(LinkList *head, LinkList p) //删除节点
{
if(*head==NULL ||p==NULL) return;
if(p==*head)
{
*head = (*head)->next;
delete p;
p=NULL;
return;
}
while((*head)->next !=p && (*head)->next);
if(!(*head)->next) return;
else
{
(*head)->next = (*head)->next->next;
delete p;
p=NULL;
}
}

//-------主函数部分----------------------
void main()
{
...
LinkList p=L;
*p = (*p)->next;
delnode(&L, p);
...
}