当我在 for 循环外声明一个变量时,为什么我的代码不起作用?
Why does my code doesn't work when i declare a variable outside the for loop?
我想得到两个链表的交集,但是当我在 for 循环外声明迭代器时,它不起作用
// THIS WORKS FINE
for (SList iter1 = list1 ; !slist_empty(iter1); iter1 = iter1->next) {
for(SList iter2 = list2 ; !slist_empty(iter2); iter2 = iter2->next) {
if(comp(iter1->data, iter2->data)) {
result = slist_add(result, iter1->data);
}
}
}
// THIS DOESN't
SList iter1 = list1 ;
SList iter2 = list2 ;
for (; !slist_empty(iter1); iter1 = iter1->next) {
for(; !slist_empty(iter2); iter2 = iter2->next) {
if(comp(iter1->data, iter2->data)) {
result = slist_add(result, iter1->data);
}
}
}
我正在使用 -std=c99 进行编译
在第一个版本中,您会为 list1
中的每个项目检查 list2
。
在第二个版本中,对于 list1
中的第一项,您只需要经过 list2
。每次需要 "reset" iter2
到 list2
的开头。
我想得到两个链表的交集,但是当我在 for 循环外声明迭代器时,它不起作用
// THIS WORKS FINE
for (SList iter1 = list1 ; !slist_empty(iter1); iter1 = iter1->next) {
for(SList iter2 = list2 ; !slist_empty(iter2); iter2 = iter2->next) {
if(comp(iter1->data, iter2->data)) {
result = slist_add(result, iter1->data);
}
}
}
// THIS DOESN't
SList iter1 = list1 ;
SList iter2 = list2 ;
for (; !slist_empty(iter1); iter1 = iter1->next) {
for(; !slist_empty(iter2); iter2 = iter2->next) {
if(comp(iter1->data, iter2->data)) {
result = slist_add(result, iter1->data);
}
}
}
我正在使用 -std=c99 进行编译
在第一个版本中,您会为 list1
中的每个项目检查 list2
。
在第二个版本中,对于 list1
中的第一项,您只需要经过 list2
。每次需要 "reset" iter2
到 list2
的开头。