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;
}
但是当我像这样比较节点时。它返回错误:
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 ?
}
那么,这里比较的是什么(在文档中,它写的是获取给定元素在 GSList 中的位置)、节点或列表中包含的数据?
编辑:感谢所有给出的,我的错误我实际上是以错误的方式做的。我必须比较列表的相同实例。