数据结构链表指定元素删除 结果只显示删除后面的值,求解,谢谢

#include<stdio.h>#include<stdlib.h>typedefstructnode{structnode*next;intvalue;}link;l... #include<stdio.h>#include<stdlib.h>
typedef struct node
{
struct node *next;
int value;
}link;
link *create()
{
int n;
link *p,*h,*q;
h=q=NULL;
scanf("%d",&n);
while(n>0)
{

p=(link *)malloc(sizeof(link));
p->next=NULL;
p->value=n;
if(h==NULL)
{
h=q=p;
}
else
{
q->next=p;
q=p;
}
scanf("%d",&n);
}
return h;
}
void shanchu(int n)
{
int j=1;
link *h,*p,*q;
h=create();
p=h;

while(h->next!=NULL&&j<n){
h=h->next;
j++;
}
q=p->next;
if(p->next==NULL)
{
printf("删除的位置不对\n");

}
else
{
q=p->next;
p->next=q->next;
free(q);
printf("链表的%d位置已删除\n",n);

}
while(h->next!=NULL)
{
printf("---%d",h->value);
h=h->next;
}
free(h);
}
main()
{
int n=6;
shanchu(n);
}
展开
 我来答
戏雨南s8
2013-04-19 · TA获得超过504个赞
知道小有建树答主
回答量:376
采纳率:0%
帮助的人:291万
展开全部
while(h->next!=NULL&&j<n){
h=h->next;
j++;
}
原因是因为你这里已经改变了h,它并不在指向表头了。
更多追问追答
追问
请问如何改进呢?
追答
你这段
while(h->next!=NULL&&jnext;
j++;
}
代码是干嘛??你把它删了看看>>>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式