【发布时间】:2012-04-18 06:11:19
【问题描述】:
如何习惯性地从singly-linked list in GLib 的开头“弹出”?有几个函数可以粘合在一起,但不会像 g_slist_prepend 的预期反函数那样突出。
【问题讨论】:
-
如果你想要 push/pop,为什么不使用(de)queue?
如何习惯性地从singly-linked list in GLib 的开头“弹出”?有几个函数可以粘合在一起,但不会像 g_slist_prepend 的预期反函数那样突出。
【问题讨论】:
根据您的用例,或者
// pop and discard head
list = g_slist_delete_link(list, list);
或
// pop head but keep it for further use
GSList *head = list;
list = g_slist_remove_link(list, head);
// do stuff with head
g_slist_free1(head);
【讨论】:
您可以使用double-ended queue,它有g_queue_push_head 和g_queue_pop_head。
【讨论】:
list = g_slist_remove(list, list->data);
【讨论】: