Blame docs/tutorial/html/x2035.html

Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>Doubly Linked Lists
Packit Service fb6fa5
>
Packit Service fb6fa5
NAME="GENERATOR"
Packit Service fb6fa5
CONTENT="Modular DocBook HTML Stylesheet Version 1.79">
Packit Service fb6fa5
REL="HOME"
Packit Service fb6fa5
TITLE="GTK+ 2.0 Tutorial"
Packit Service fb6fa5
HREF="book1.html">
Packit Service fb6fa5
REL="UP"
Packit Service fb6fa5
TITLE="GLib"
Packit Service fb6fa5
HREF="c2023.html">
Packit Service fb6fa5
REL="PREVIOUS"
Packit Service fb6fa5
TITLE="GLib"
Packit Service fb6fa5
HREF="c2023.html">
Packit Service fb6fa5
REL="NEXT"
Packit Service fb6fa5
TITLE="Singly Linked Lists"
Packit Service fb6fa5
HREF="x2055.html">
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="SECT1"
Packit Service fb6fa5
BGCOLOR="#FFFFFF"
Packit Service fb6fa5
TEXT="#000000"
Packit Service fb6fa5
LINK="#0000FF"
Packit Service fb6fa5
VLINK="#840084"
Packit Service fb6fa5
ALINK="#0000FF"
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="NAVHEADER"
Packit Service fb6fa5
>
Packit Service fb6fa5
SUMMARY="Header navigation table"
Packit Service fb6fa5
WIDTH="100%"
Packit Service fb6fa5
BORDER="0"
Packit Service fb6fa5
CELLPADDING="0"
Packit Service fb6fa5
CELLSPACING="0"
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
COLSPAN="3"
Packit Service fb6fa5
ALIGN="center"
Packit Service fb6fa5
>GTK+ 2.0 Tutorial
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="10%"
Packit Service fb6fa5
ALIGN="left"
Packit Service fb6fa5
VALIGN="bottom"
Packit Service fb6fa5
>
Packit Service fb6fa5
HREF="c2023.html"
Packit Service fb6fa5
ACCESSKEY="P"
Packit Service fb6fa5
><<< Previous
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="80%"
Packit Service fb6fa5
ALIGN="center"
Packit Service fb6fa5
VALIGN="bottom"
Packit Service fb6fa5
>GLib
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="10%"
Packit Service fb6fa5
ALIGN="right"
Packit Service fb6fa5
VALIGN="bottom"
Packit Service fb6fa5
>
Packit Service fb6fa5
HREF="x2055.html"
Packit Service fb6fa5
ACCESSKEY="N"
Packit Service fb6fa5
>Next >>>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
ALIGN="LEFT"
Packit Service fb6fa5
WIDTH="100%">
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="SECT1"
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="SECT1"
Packit Service fb6fa5
>
Packit Service fb6fa5
NAME="SEC-DOUBLYLINKEDLISTS"
Packit Service fb6fa5
>Doubly Linked Lists
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>The following functions are used to create, manage, and destroy
Packit Service fb6fa5
standard doubly linked lists. Each element in the list contains a
Packit Service fb6fa5
piece of data, together with pointers which link to the previous and
Packit Service fb6fa5
next elements in the list. This enables easy movement in either
Packit Service fb6fa5
direction through the list. The data item is of type "gpointer",
Packit Service fb6fa5
which means the data can be a pointer to your real data or (through
Packit Service fb6fa5
casting) a numeric value (but do not assume that int and gpointer have
Packit Service fb6fa5
the same size!). These routines internally allocate list elements in
Packit Service fb6fa5
blocks, which is more efficient than allocating elements individually.
Packit Service fb6fa5
>
Packit Service fb6fa5
>There is no function to specifically create a list. Instead, simply
Packit Service fb6fa5
create a variable of type GList* and set its value to NULL; NULL is
Packit Service fb6fa5
considered to be the empty list.
Packit Service fb6fa5
>
Packit Service fb6fa5
>To add elements to a list, use the g_list_append(), g_list_prepend(),
Packit Service fb6fa5
g_list_insert(), or g_list_insert_sorted() routines. In all cases
Packit Service fb6fa5
they accept a pointer to the beginning of the list, and return the
Packit Service fb6fa5
(possibly changed) pointer to the beginning of the list. Thus, for
Packit Service fb6fa5
all of the operations that add or remove elements, be sure to save the
Packit Service fb6fa5
returned value!
Packit Service fb6fa5
>
Packit Service fb6fa5
BORDER="0"
Packit Service fb6fa5
BGCOLOR="#E0E0E0"
Packit Service fb6fa5
WIDTH="100%"
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="PROGRAMLISTING"
Packit Service fb6fa5
>GList *g_list_append( GList    *list,
Packit Service fb6fa5
                      gpointer  data );
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>This adds a new element (with value 
Packit Service fb6fa5
CLASS="LITERAL"
Packit Service fb6fa5
>data
Packit Service fb6fa5
>) onto the end of the
Packit Service fb6fa5
list.
Packit Service fb6fa5
>
Packit Service fb6fa5
BORDER="0"
Packit Service fb6fa5
BGCOLOR="#E0E0E0"
Packit Service fb6fa5
WIDTH="100%"
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="PROGRAMLISTING"
Packit Service fb6fa5
>GList *g_list_prepend( GList    *list,
Packit Service fb6fa5
                       gpointer  data );
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>This adds a new element (with value 
Packit Service fb6fa5
CLASS="LITERAL"
Packit Service fb6fa5
>data
Packit Service fb6fa5
>) to the beginning of the
Packit Service fb6fa5
list.
Packit Service fb6fa5
>
Packit Service fb6fa5
BORDER="0"
Packit Service fb6fa5
BGCOLOR="#E0E0E0"
Packit Service fb6fa5
WIDTH="100%"
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="PROGRAMLISTING"
Packit Service fb6fa5
>GList *g_list_insert( GList    *list,
Packit Service fb6fa5
                      gpointer  data,
Packit Service fb6fa5
                      gint      position );
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>This inserts a new element (with value data) into the list at the
Packit Service fb6fa5
given position. If position is 0, this is just like g_list_prepend();
Packit Service fb6fa5
if position is less than 0, this is just like g_list_append().
Packit Service fb6fa5
>
Packit Service fb6fa5
BORDER="0"
Packit Service fb6fa5
BGCOLOR="#E0E0E0"
Packit Service fb6fa5
WIDTH="100%"
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="PROGRAMLISTING"
Packit Service fb6fa5
>GList *g_list_remove( GList    *list,
Packit Service fb6fa5
                      gpointer  data );
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>This removes the element in the list with the value 
Packit Service fb6fa5
CLASS="LITERAL"
Packit Service fb6fa5
>data
Packit Service fb6fa5
>;
Packit Service fb6fa5
if the element isn't there, the list is unchanged.
Packit Service fb6fa5
>
Packit Service fb6fa5
BORDER="0"
Packit Service fb6fa5
BGCOLOR="#E0E0E0"
Packit Service fb6fa5
WIDTH="100%"
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="PROGRAMLISTING"
Packit Service fb6fa5
>void g_list_free( GList *list );
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>This frees all of the memory used by a GList. If the list elements
Packit Service fb6fa5
refer to dynamically-allocated memory, then they should be freed
Packit Service fb6fa5
first.
Packit Service fb6fa5
>
Packit Service fb6fa5
>There are many other GLib functions that support doubly linked lists;
Packit Service fb6fa5
see the glib documentation for more information.  Here are a few of
Packit Service fb6fa5
the more useful functions' signatures:
Packit Service fb6fa5
>
Packit Service fb6fa5
BORDER="0"
Packit Service fb6fa5
BGCOLOR="#E0E0E0"
Packit Service fb6fa5
WIDTH="100%"
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="PROGRAMLISTING"
Packit Service fb6fa5
>  
Packit Service fb6fa5
GList *g_list_remove_link( GList *list,
Packit Service fb6fa5
                           GList *link );
Packit Service fb6fa5
Packit Service fb6fa5
GList *g_list_reverse( GList *list );
Packit Service fb6fa5
Packit Service fb6fa5
GList *g_list_nth( GList *list,
Packit Service fb6fa5
                   gint   n );
Packit Service fb6fa5
			   
Packit Service fb6fa5
GList *g_list_find( GList    *list,
Packit Service fb6fa5
                    gpointer  data );
Packit Service fb6fa5
Packit Service fb6fa5
GList *g_list_last( GList *list );
Packit Service fb6fa5
Packit Service fb6fa5
GList *g_list_first( GList *list );
Packit Service fb6fa5
Packit Service fb6fa5
gint g_list_length( GList *list );
Packit Service fb6fa5
Packit Service fb6fa5
void g_list_foreach( GList    *list,
Packit Service fb6fa5
                     GFunc     func,
Packit Service fb6fa5
                     gpointer  user_data );
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="NAVFOOTER"
Packit Service fb6fa5
>
Packit Service fb6fa5
ALIGN="LEFT"
Packit Service fb6fa5
WIDTH="100%">
Packit Service fb6fa5
SUMMARY="Footer navigation table"
Packit Service fb6fa5
WIDTH="100%"
Packit Service fb6fa5
BORDER="0"
Packit Service fb6fa5
CELLPADDING="0"
Packit Service fb6fa5
CELLSPACING="0"
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="33%"
Packit Service fb6fa5
ALIGN="left"
Packit Service fb6fa5
VALIGN="top"
Packit Service fb6fa5
>
Packit Service fb6fa5
HREF="c2023.html"
Packit Service fb6fa5
ACCESSKEY="P"
Packit Service fb6fa5
><<< Previous
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="34%"
Packit Service fb6fa5
ALIGN="center"
Packit Service fb6fa5
VALIGN="top"
Packit Service fb6fa5
>
Packit Service fb6fa5
HREF="book1.html"
Packit Service fb6fa5
ACCESSKEY="H"
Packit Service fb6fa5
>Home
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="33%"
Packit Service fb6fa5
ALIGN="right"
Packit Service fb6fa5
VALIGN="top"
Packit Service fb6fa5
>
Packit Service fb6fa5
HREF="x2055.html"
Packit Service fb6fa5
ACCESSKEY="N"
Packit Service fb6fa5
>Next >>>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="33%"
Packit Service fb6fa5
ALIGN="left"
Packit Service fb6fa5
VALIGN="top"
Packit Service fb6fa5
>GLib
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="34%"
Packit Service fb6fa5
ALIGN="center"
Packit Service fb6fa5
VALIGN="top"
Packit Service fb6fa5
>
Packit Service fb6fa5
HREF="c2023.html"
Packit Service fb6fa5
ACCESSKEY="U"
Packit Service fb6fa5
>Up
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="33%"
Packit Service fb6fa5
ALIGN="right"
Packit Service fb6fa5
VALIGN="top"
Packit Service fb6fa5
>Singly Linked Lists
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>