我创建了一个方法,它可以在链表中查找所需的元素并返回其索引:它应该返回索引或不成功的消息,然而,我的程序打印:
代码:
void findVal(int val, myNode *head) {
myNode *p = NULL;
p = head;
int i = 0;
while (p != NULL){
if (val == p->val){
printf("\nthe id is:%d.",i);
}
p = p->next;
i++;
}
printf("cannot find the value");
}
结果(我想在一个链表中查找所有的'4',“123456478”):
the id is 3
the id is 6
cannot find the value
然后使用return
;这打印了第一个4的id,然后停止循环。问题是我的链表中有两个'4':123456478.
if (val == p->val){
printf("\nthe id is:%d.",i);
return;
}
然后我想到了使用一个数组来存储每次找到匹配的索引。在循环之后,如果数组为空,则打印失败消息,但是如果数组不为空,则打印所有索引。
然而,我相信有一个更好的解决办法,所以有没有人能帮忙?
1条答案
按热度按时间hgqdbh6s1#
你只需要一个'flag'变量,初始设置为零,然后如果/当你找到匹配时将其设置为非零。如果,在循环结束后,该标志仍然为零,则显示“未找到”消息: