下面是我在链表中进行搜索的代码,但它没有给出正确的结果。请帮帮我,我很担心。
search() {
char ser[20];
cout << "enter data to be searched" << endl;
gets(ser);
for ( start=head; start->ptr!=NULL; start=start->ptr ) {
if ( start->info == ser ) {
cout << "ok" << endl;
break;
}
}
cout << "not found" << endl;
}谢谢,赛马·坎瓦尔·布塔
发布于 2011-04-30 16:12:41
赛马
首先,欢迎来到论坛,也欢迎精彩、令人沮丧和成果丰硕的计算机编程世界。
其次,我编辑了你的帖子。如果您现在单击edit按钮,您将看到如何布局您的源代码,以便论坛很好地显示它。
第三,我猜你指的是return,你说的是break ...这样您就不会总是看到“找不到”的消息。这是你想要的吗?
第四,我建议您将用户输入部分与列表搜索部分分开...这很容易做到,而且它使链表搜索可用于任何字符串(来自任何地方),而不仅仅是用户现在输入的字符串。同样,将输出从搜索中分离出来,这样您就可以在以后重用搜索,以便在这种情况下生成任何合适的输出。
最后,这些变量名(请原谅)太烂了!
所以..。我的ANSI-C版本看起来像这样:
int contains(char* target) {
for ( Node node=head; node->next!=NULL; node=node->next ) {
if ( strcmp(node->data, target)==0 ) {
return 0; // TRUE
}
}
return 1; // FALSE
}以上是链表各部分的“相当标准”的名称,它们有助于使您的代码更具可读性,因此可维护性更好。另外,WTF是一个“ser...”“目标”怎么样?
如果这都是你想不到的,那就别担心了。暂时忽略这个建议。
干杯。基思。
https://stackoverflow.com/questions/5840420
复制相似问题