这样改:
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设为全局变量,你要弄清楚变量得作用域哦。
还有个问题,如果你得链表中有重复得数据,它只删头一个哦
没有详细看,不过在删除函数里面有错误。
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;
你的链表插入的有问题你改改先。