【发布时间】:2014-10-16 11:32:12
【问题描述】:
我编写了一个代码来从单链表中删除一个节点 a。我已经测试了这段代码,输出很好。我对这段代码中的最后一个“else”块有点困惑。这是正确的吗? 我的意思是,在释放 (p->ptr) 节点之后,我如何仍然可以访问它旁边的节点?
NODE* delNODE(NODE *HEAD,int position){
int k=1;
NODE *p;
if(HEAD==NULL){
printf("List Empty\n");
return HEAD;
}
p=HEAD;
if(position==1){
p=HEAD;
HEAD=HEAD->ptr;
free(p);
printf("Success!\n");
return HEAD;
}
else{
while(k<position-1){
k++;
p=p->ptr;
}
if((p->ptr)==NULL)
{
printf("NO such position\n");
}
else{
free(p->ptr);
p->ptr=p->ptr->ptr;
printf("Success!\n");
}
}
return HEAD;
}
【问题讨论】:
-
@pala 这样做也是不正确的。
标签: c singly-linked-list