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给定元素的位置)包含在列表中,一个节点或数据?
编辑:由于所有给定的,我的错误,我实际上是在做错误的方式。我必须比较列表的相同实例。
那么,为什么它返回-1,当他们比较两个环节 –
@ ashish2expert如果没有发现读更新ansed –
你能告诉我,当它返回正值的例子吗? –