【问题标题】:Why does my code doesn't work when i declare a variable outside the for loop?为什么当我在 for 循环之外声明一个变量时我的代码不起作用?
【发布时间】:2019-03-27 22:24:32
【问题描述】:

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

【问题讨论】:

  • 就是不行你能说的更清楚点吗?你不能编译?执行失败? SList 的定义是什么?标签是C,真的是C还是C++?

标签: c loops pointers linked-list variable-declaration


【解决方案1】:

在第一个版本中,您对list1 中的每个项目都使用list2

在第二个版本中,list1 中的第一项仅通过 list2。每次都需要将iter2“重置”到list2的开头。

【讨论】:

    猜你喜欢
    • 2022-07-18
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 2014-09-07
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多