从GLib单链表中弹出

时间:2012-04-13 16:24:08

标签: c list glib

如何从singly-linked list in GLib的开头惯用“弹出”?有几个函数可以粘在一起,但不能成为g_slist_prepend的预期反转。

3 个答案:

答案 0 :(得分:3)

根据您的使用情况,

// 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);

答案 1 :(得分:2)

您可以使用double-ended queue,其g_queue_push_headg_queue_pop_head

答案 2 :(得分:0)

list = g_slist_remove(list, list->data);