菜鸟请教:c语言中怎么删除单链表中的某个节点

已知头结点为head,共18个节点,想删掉第9个
节点的形式为
typedef struct link
{
int data;
struct link * next;
}NODE;
希望能够把代码写出来,很急,谢谢

第1个回答  2010-11-08
//L为头结点指针;i为要删除的结点序号

void DelList(LinkList L,int i)//删除指定位置结点
{
Node *pre,*r;
int k=0;
pre=L;
if(i<1) return;
while (pre->next!=NULL&&k<i-1)
{
pre=pre->next;
k=k+1;
}
if (!(pre->next))
{
printf("删除结点位置不合法");
return;
}
else
{
r=pre->next;
pre->next=r->next;

free(r);
printf("删除成功\n");

return;
}
}
第2个回答  2010-11-08
NODE * x = head; NODE * y = 0;
int i = 0;
for(i = 0; i < 8; i++) x = x->next;
y = x->next;
x->next = y->next;
free(y);本回答被提问者采纳