【问题标题】:Pop from GLib singly-linked list从 GLib 单链表中弹出
【发布时间】:2012-04-18 06:11:19
【问题描述】:

如何习惯性地从singly-linked list in GLib 的开头“弹出”?有几个函数可以粘合在一起,但不会像 g_slist_prepend 的预期反函数那样突出。

【问题讨论】:

  • 如果你想要 push/pop,为什么不使用(de)queue?

标签: c list glib


【解决方案1】:

根据您的用例,或者

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

【讨论】:

    【解决方案2】:

    您可以使用double-ended queue,它有g_queue_push_headg_queue_pop_head

    【讨论】:

      【解决方案3】:
      list = g_slist_remove(list, list->data);
      

      【讨论】:

        猜你喜欢
        • 2013-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-16
        • 1970-01-01
        • 1970-01-01
        • 2011-03-25
        相关资源
        最近更新 更多