?? trees-nary.sgml
字號:
<!-- ##### SECTION Title ##### -->N-ary Trees<!-- ##### SECTION Short_Description ##### -->trees of data with any number of branches<!-- ##### SECTION Long_Description ##### --><para>The #GNode struct and its associated functions provide a N-ary tree datastructure, where nodes in the tree can contain arbitrary data.</para><para>To create a new tree use g_node_new().</para><para>To insert a node into a tree use g_node_insert(), g_node_insert_before(),g_node_append() and g_node_prepend().</para><para>To create a new node and insert it into a tree use g_node_insert_data(), g_node_insert_data_before(), g_node_append_data() and g_node_prepend_data().</para><para>To reverse the children of a node use g_node_reverse_children().</para><para>To find a node use g_node_get_root(), g_node_find(), g_node_find_child(),g_node_child_index(), g_node_child_position(), g_node_first_child(), g_node_last_child(),g_node_nth_child(), g_node_first_sibling(), g_node_prev_sibling(),g_node_next_sibling() or g_node_last_sibling().</para><para>To get information about a node or tree use G_NODE_IS_LEAF(),G_NODE_IS_ROOT(), g_node_depth(), g_node_n_nodes(), g_node_n_children(),g_node_is_ancestor() or g_node_max_height().</para><para>To traverse a tree, calling a function for each node visited in thetraversal, use g_node_traverse() or g_node_children_foreach().</para><para>To remove a node or subtree from a tree use g_node_unlink() org_node_destroy().</para><!-- ##### SECTION See_Also ##### --><para></para><!-- ##### SECTION Stability_Level ##### --><!-- ##### STRUCT GNode ##### --><para>The <structname>GNode</structname> struct represents one node in a<link linkend="glib-N-ary-Trees">N-ary Tree</link>.fields </para>@data: contains the actual data of the node.@next: points to the node's next sibling (a sibling is another <structname>GNode</structname> with the same parent).@prev: points to the node's previous sibling.@parent: points to the parent of the <structname>GNode</structname>, or is %NULL if the <structname>GNode</structname> is the root of the tree.@children: The <structfield>children</structfield> field points to the first child of the <structname>GNode</structname>. The other children are accessed by using the <structfield>next</structfield> pointer of each child.<!-- ##### FUNCTION g_node_new ##### --><para></para>@data: @Returns: <!-- ##### FUNCTION g_node_copy ##### --><para></para>@node: @Returns: <!-- ##### USER_FUNCTION GCopyFunc ##### --><para></para>@src: @data: @Returns: <!-- ##### FUNCTION g_node_copy_deep ##### --><para></para>@node: @copy_func: @data: @Returns: <!-- ##### FUNCTION g_node_insert ##### --><para></para>@parent: @position: @node: @Returns: <!-- ##### FUNCTION g_node_insert_before ##### --><para></para>@parent: @sibling: @node: @Returns: <!-- ##### FUNCTION g_node_insert_after ##### --><para></para>@parent: @sibling: @node: @Returns: <!-- ##### MACRO g_node_append ##### --><para></para>@parent: @node: @Returns: <!-- ##### FUNCTION g_node_prepend ##### --><para></para>@parent: @node: @Returns: <!-- ##### MACRO g_node_insert_data ##### --><para></para>@parent: @position: @data: @Returns: <!-- ##### MACRO g_node_insert_data_before ##### --><para></para>@parent: @sibling: @data: @Returns: <!-- ##### MACRO g_node_append_data ##### --><para></para>@parent: @data: @Returns: <!-- ##### MACRO g_node_prepend_data ##### --><para></para>@parent: @data: @Returns: <!-- ##### FUNCTION g_node_reverse_children ##### --><para></para>@node: <!-- ##### FUNCTION g_node_traverse ##### --><para></para>@root: @order: @flags: @max_depth: @func: @data: <!-- ##### ENUM GTraverseFlags ##### --><para>Specifies which nodes are visited during several of the tree functions,including g_node_traverse() and g_node_find().</para>@G_TRAVERSE_LEAVES: only leaf nodes should be visited. This name has been introduced in 2.6, for older version use %G_TRAVERSE_LEAFS.@G_TRAVERSE_NON_LEAVES: only non-leaf nodes should be visited. This name has been introduced in 2.6, for older version use %G_TRAVERSE_NON_LEAFS.@G_TRAVERSE_ALL: all nodes should be visited.@G_TRAVERSE_MASK: a mask of all traverse flags.@G_TRAVERSE_LEAFS: identical to %G_TRAVERSE_LEAVES.@G_TRAVERSE_NON_LEAFS: identical to %G_TRAVERSE_NON_LEAVES.<!-- ##### USER_FUNCTION GNodeTraverseFunc ##### --><para>Specifies the type of function passed to g_node_traverse().The function is called with each of the nodes visited, together with theuser data passed to g_node_traverse().If the function returns %TRUE, then the traversal is stopped.</para>@node: a #GNode.@data: user data passed to g_node_traverse().@Returns: %TRUE to stop the traversal.<!-- ##### FUNCTION g_node_children_foreach ##### --><para></para>@node: @flags: @func: @data: <!-- ##### USER_FUNCTION GNodeForeachFunc ##### --><para>Specifies the type of function passed to g_node_children_foreach().The function is called with each child node, together with the user datapassed to g_node_children_foreach().</para>@node: a #GNode.@data: user data passed to g_node_children_foreach().<!-- ##### FUNCTION g_node_get_root ##### --><para></para>@node: @Returns: <!-- ##### FUNCTION g_node_find ##### --><para></para>@root: @order: @flags: @data: @Returns: <!-- ##### FUNCTION g_node_find_child ##### --><para></para>@node: @flags: @data: @Returns: <!-- ##### FUNCTION g_node_child_index ##### --><para></para>@node: @data: @Returns: <!-- ##### FUNCTION g_node_child_position ##### --><para></para>@node: @child: @Returns: <!-- ##### MACRO g_node_first_child ##### --><para></para>@node: @Returns: <!-- ##### FUNCTION g_node_last_child ##### --><para></para>@node: @Returns: <!-- ##### FUNCTION g_node_nth_child ##### --><para></para>@node: @n: @Returns: <!-- ##### FUNCTION g_node_first_sibling ##### --><para></para>@node: @Returns: <!-- ##### MACRO g_node_next_sibling ##### --><para></para>@node: @Returns: <!-- ##### MACRO g_node_prev_sibling ##### --><para></para>@node: @Returns: <!-- ##### FUNCTION g_node_last_sibling ##### --><para></para>@node: @Returns: <!-- ##### MACRO G_NODE_IS_LEAF ##### --><para></para>@node: @Returns: <!-- ##### MACRO G_NODE_IS_ROOT ##### --><para></para>@node: @Returns: <!-- ##### FUNCTION g_node_depth ##### --><para></para>@node: @Returns: <!-- ##### FUNCTION g_node_n_nodes ##### --><para></para>@root: @flags: @Returns: <!-- ##### FUNCTION g_node_n_children ##### --><para></para>@node: @Returns: <!-- ##### FUNCTION g_node_is_ancestor ##### --><para></para>@node: @descendant: @Returns: <!-- ##### FUNCTION g_node_max_height ##### --><para></para>@root: @Returns: <!-- ##### FUNCTION g_node_unlink ##### --><para></para>@node: <!-- ##### FUNCTION g_node_destroy ##### --><para></para>@root: <!-- ##### FUNCTION g_node_push_allocator ##### --><para>Sets the allocator to use to allocate #GNode elements.Use g_node_pop_allocator() to restore the previous allocator.</para><para>Note that this function is not available if GLib has been compiledwith <option>--disable-mem-pools</option></para>@dummy: the #GAllocator to use when allocating #GNode elements.@Deprecated: 2.10: It does nothing, since #GNode has been converted to the <link linkend="glib-Memory-Slices">slice allocator</link><!-- ##### FUNCTION g_node_pop_allocator ##### --><para>Restores the previous #GAllocator, used when allocating #GNode elements.</para><para>Note that this function is not available if GLib has been compiledwith <option>--disable-mem-pools</option></para>@Deprecated: 2.10: It does nothing, since #GNode has been converted to the <link linkend="glib-Memory-Slices">slice allocator</link>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -