当我在for循环之外声明一个变量时,为什么我的代码不起作用?

问题描述 投票:-1回答:1

我想获得两个链表的交集,但是当我在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

c loops pointers linked-list variable-declaration
1个回答
2
投票

在第一个版本中,您将通过list2获取list1中的每个项目。

在第二个版本中,您只需通过list2获取list1中的第一个项目。你需要每次将iter2“重置”到list2的开头。

© www.soinside.com 2019 - 2024. All rights reserved.