【发布时间】:2018-04-10 10:05:12
【问题描述】:
我在结构中有一个列表,
struct A{
list B;
};
我也有一个指向这个结构的指针,比如
struct A *a;
现在,假设列表已经实现,其元素的类型为elem。
然后,我执行以下操作 -
(i) 我在nodeL(elem 类型的指针)中获得列表的头部
elem * nodeL = list_get_head(&(a->B));
(ii) 我现在以这种方式遍历列表:
while(nodeL != (elem *)(&a->B)){ // did not get this part ----- I
; //some code here
nodeL = list_get_next(&(a->B), nodeL);
}
假设list_get_head 获得指向列表头的指针,list_get_next 获得指向传递的第二个参数elem 的下一个元素的指针。
现在我的问题是:
- 我的循环条件是什么?我希望循环到什么列表? (见
I)也就是说,如果&(a->B)是列表开始的地址,那么这里的&a->B是什么?
我认为这应该循环到列表末尾,但似乎这不是 while 循环条件正在做的事情。另外,这是一个循环双向链表。
【问题讨论】:
-
代码前定义的
&A->Bstructure或some variable中的A是什么? -
"->" 的优先级高于 "&",所以
&(A->B)和&A->B完全一样。 -
@ShashankSingh 我已经修改了我的代码 - 对不起这个错误。现在就来看看
-
@Sigismondo 你确定吗?所以两者的意思是一样的?
-
是的,我确定!在这两种情况下,这只是指向列表的指针。只需谷歌搜索“运算符优先级”,或在 test.c 源代码中测试它...... :)
标签: c list doubly-linked-list circular-list