<!-- ##### SECTION Title ##### --> Double-ended Queues <!-- ##### SECTION Short_Description ##### --> double-ended queue data structure. <!-- ##### SECTION Long_Description ##### --> <para> The #GQueue structure and its associated functions provide a standard queue data structure. Internally, #GQueue uses the same data structure as #GList to store elements. </para> <para> The data contained in each element can be either integer values, by using one of the <link linkend="glib-Type-Conversion-Macros">Type Conversion Macros</link>, or simply pointers to any type of data. </para> <para> To create a new #GQueue, use g_queue_new(). </para> <para> To add elements, use g_queue_push_head(), g_queue_push_head_link(), g_queue_push_tail() and g_queue_push_tail_link(). </para> <para> To remove elements, use g_queue_pop_head() and g_queue_pop_tail(). </para> <para> To free the entire queue, use g_queue_free(). </para> <!-- ##### SECTION See_Also ##### --> <para> </para> <!-- ##### STRUCT GQueue ##### --> <para> Contains the public fields of a <link linkend="glib-queues">Queue</link>. </para> @head: a pointer to the first element of the queue. @tail: a pointer to the last element of the queue. @length: the number of elements in the queue. <!-- ##### FUNCTION g_queue_new ##### --> <para> </para> @Returns: <!-- ##### FUNCTION g_queue_free ##### --> <para> </para> @queue: <!-- ##### FUNCTION g_queue_is_empty ##### --> <para> </para> @queue: @Returns: <!-- ##### FUNCTION g_queue_get_length ##### --> <para> </para> @queue: @Returns: <!-- ##### FUNCTION g_queue_reverse ##### --> <para> </para> @queue: <!-- ##### FUNCTION g_queue_copy ##### --> <para> </para> @queue: @Returns: <!-- ##### FUNCTION g_queue_foreach ##### --> <para> </para> @queue: @func: @user_data: <!-- ##### FUNCTION g_queue_find ##### --> <para> </para> @queue: @data: @Returns: <!-- ##### FUNCTION g_queue_find_custom ##### --> <para> </para> @queue: @data: @func: @Returns: <!-- ##### FUNCTION g_queue_sort ##### --> <para> </para> @queue: @compare_func: @user_data: <!-- ##### FUNCTION g_queue_push_head ##### --> <para> </para> @queue: @data: <!-- ##### FUNCTION g_queue_push_tail ##### --> <para> </para> @queue: @data: <!-- ##### FUNCTION g_queue_push_nth ##### --> <para> </para> @queue: @data: @n: <!-- ##### FUNCTION g_queue_pop_head ##### --> <para> </para> @queue: @Returns: <!-- ##### FUNCTION g_queue_pop_tail ##### --> <para> </para> @queue: @Returns: <!-- ##### FUNCTION g_queue_pop_nth ##### --> <para> </para> @queue: @n: @Returns: <!-- ##### FUNCTION g_queue_peek_head ##### --> <para> </para> @queue: @Returns: <!-- ##### FUNCTION g_queue_peek_tail ##### --> <para> </para> @queue: @Returns: <!-- ##### FUNCTION g_queue_peek_nth ##### --> <para> </para> @queue: @n: @Returns: <!-- ##### FUNCTION g_queue_index ##### --> <para> </para> @queue: @data: @Returns: <!-- ##### FUNCTION g_queue_remove ##### --> <para> </para> @queue: @data: <!-- ##### FUNCTION g_queue_remove_all ##### --> <para> </para> @queue: @data: <!-- ##### FUNCTION g_queue_insert_before ##### --> <para> </para> @queue: @sibling: @data: <!-- ##### FUNCTION g_queue_insert_after ##### --> <para> </para> @queue: @sibling: @data: <!-- ##### FUNCTION g_queue_insert_sorted ##### --> <para> </para> @queue: @data: @func: @user_data: <!-- ##### FUNCTION g_queue_push_head_link ##### --> <para> </para> @queue: @link_: <!-- ##### FUNCTION g_queue_push_tail_link ##### --> <para> </para> @queue: @link_: <!-- ##### FUNCTION g_queue_push_nth_link ##### --> <para> </para> @queue: @n: @link_: <!-- ##### FUNCTION g_queue_pop_head_link ##### --> <para> </para> @queue: @Returns: <!-- ##### FUNCTION g_queue_pop_tail_link ##### --> <para> </para> @queue: @Returns: <!-- ##### FUNCTION g_queue_pop_nth_link ##### --> <para> </para> @queue: @n: @Returns: <!-- ##### FUNCTION g_queue_peek_head_link ##### --> <para> </para> @queue: @Returns: <!-- ##### FUNCTION g_queue_peek_tail_link ##### --> <para> </para> @queue: @Returns: <!-- ##### FUNCTION g_queue_peek_nth_link ##### --> <para> </para> @queue: @n: @Returns: <!-- ##### FUNCTION g_queue_link_index ##### --> <para> </para> @queue: @link_: @Returns: <!-- ##### FUNCTION g_queue_unlink ##### --> <para> </para> @queue: @link_: <!-- ##### FUNCTION g_queue_delete_link ##### --> <para> </para> @queue: @link_: