【发布时间】:2013-08-03 06:55:19
【问题描述】:
GLib 库这样做是为了比较两个单链表节点:
typedef struct _GSList {
_GSList *link;
void *data;
} GSList;
int g_sListPosition(GSList *list, GSList *llink) {
int cnt = 0;
while(list) {
if(list == llink) // Note here
return cnt;
cnt++;
list = list->link;
}
return -1;
}
但是当我像这样比较节点时。它返回 false:
int main(void) {
GSList *list = NULL, *list2 = NULL;
list2 = g_sListAppend(list2, "def");
list = g_sListAppend(list, "abc");
list = g_sListAppend(list, "def");
list = g_sListAppend(list, "ghi");
printf("%d", g_sListPosition(list, list2)); // Return -1 ?
}
那么,这里比较的是什么(在DOC中,它是这样写的获取GSList中给定元素的位置),一个节点还是列表中包含的数据?
编辑:感谢所有给出的,我的错误我实际上是以错误的方式做的。我必须比较列表的相同实例。
【问题讨论】:
标签: c linked-list