我正在尝试做一个程序,我使用链表来存储蛋糕的数据,目前我正在做一个添加蛋糕的函数。这个函数将验证一些事情。我想验证,使输入的代码不能与链表中的现有代码相同。下面是函数:
struct cookie
{
char code[10], name[100];
int stock, price;
struct cookie *next;
};
int validateCode(struct cookie *test, char kode[10]){
int check;
int flag;
while(test != NULL){
check = strcmp(test->code, kode);
if(check == 0){
flag = 0;
}
else{
flag = 1;
}
test = test->next;
}
if(flag == 1){
printf("%s already exists in the linked list", kode);
}
return flag;
}
下面是输出:Output
我试着把while条件改成如下形式:
- 测试-〉下一个!=空
- 测试-〉代码!=空
但对我来说都不管用
2条答案
按热度按时间brccelvz1#
好吧,原来我愚蠢的LOL我找到了解决方案,谢谢你的评论,非常有用的提示
nzkunb0c2#
如果你想检查一个指定的数据是否已经存在于列表中,那么函数中的while循环应该在列表中找到数据后立即停止迭代。
还要注意,当两个字符串相等时,标准的C字符串函数
strcmp
返回0
,因此如果函数strcmp
返回0
,则意味着数据存在于列表中。可以通过以下方式声明和定义函数
如果数据存在于列表中,则函数返回
1
,否则返回0
。这两个函数参数都应该用限定符
const
声明,因为指向的数据在函数中没有改变。并且函数不应该输出任何消息。函数的调用者将决定是否输出消息。