请问有没有人帮我看一下下面的C++程序到底有什么问题?删除的部分总是不能删掉指定的值,非常感谢!!

2025-06-28 16:36:40
推荐回答(3个)
回答1:

这样改:

ListDelete_Link(La,e);//main函数中

 

void ListDelete_Link(LinkList L,int e)
{//删除指定元素并将其值带回e//
 //int e;
 LinkList p=L,q;
  while((p->next!=NULL)&&((p->next->data)!=e))
 {
  p=p->next;
 }
 if(p!=NULL)//是!=,都到链表尾了,你还删?
 {//记得要加花括号,否则条件满足只执行下一行,而后边的都要执行哦
 q=p->next;
 //e=q->data;//这句有神马用?
 p->next=q->next;
 }//
 delete q;
}

 

同理ListSearch也有同样问题,自己改哈

插入有问题,没仔细看,明天再弄。

 

运行结果:

 

原因分析:你代码中ListDelete_Link函数中得值是个没有初始化的值,根本就不是main函数中输入得值,你必须将main中得值传到ListDelete_Link函数中,或将变量e设为全局变量,你要弄清楚变量得作用域哦。

还有个问题,如果你得链表中有重复得数据,它只删头一个哦

回答2:

没有详细看,不过在删除函数里面有错误。
1你用malloc申请的空间应该用free释放,不要用delete。
2你说要带回e,应该是返回e吧,那应该放回值,不应该为空。
3删除指定元素,但是你的指定元素不知道。
4 if(p==NULL) // p == NULL 你的q = p - > next 有什么意义
q=p->next;
e=q->data;
p->next=q->next;

回答3:

你的链表插入的有问题你改改先。