GLib双向链表@GTK+ 2.0 中文教程连载

双向链表

以 下的函数用于创建、管理和销毁标准双向链表。链表中每个元素都包含一块数据和指向前后元素的指针。这使得通过链表的双向移动变的容易。数据项的类型是 "gpointer",意指数据可为一指向实际数据的指针或 (通过类型转换) 为一数值(但不要设想 int 和 gpointer 有相同的大小!)。这些函数在内部按块为链表元素分配空间,这比单为每个元素分配空间更有效率。

不存在专用于创建链表的函数。而是简单地创建一个类型为 Glist* 的变量,并把它的值设置为 NULL;NULL被当作空表。

向 链表中加入一个新元素,使用函数 g_list_append()、g_list_prepend()、g_list_insert() 或 g_list_insert_sorted() 。无论如何,函数都接收一个指向表头的指针作为参数,并返回一个指向表头的指针(可能和接收的指针不同)。因此,对所有添加或撤除链表元素的操作,一定要 保存返回值!

GList *g_list_append( GList    *list,
gpointer data );

此函数把一个新元素(具有值data )加到链表尾。

GList *g_list_prepend( GList    *list,
gpointer data );

此函数把一个新元素(具有值data )加到链表头。

GList *g_list_insert( GList    *list,
gpointer data,
gint position );

此函数插入一个新元素(具有值data )到链表中指定位置,如果位置是 0,它和 g_list_prepend() 函数作用相同,如果位置,它和 g_list_append() 函数作用相同。

GList *g_list_remove( GList    *list,
gpointer data );

此函数从表中移除一个具有值data 的元素,如果该元素不存在,链表不变。

void g_list_free( GList *list );

此函数释放由Glist使用的所有存储区,如果表元素空间是通过动态分配的,则应首先被释放。

还有许多其它支持双向链表的Glib函数;查看文档获得更多的信息。这儿列出几个更有用的函数的声明:

 GList *g_list_remove_link( GList *list,
GList *link );

GList *g_list_reverse( GList *list );

GList *g_list_nth( GList *list,
gint n );

GList *g_list_find( GList *list,
gpointer data );

GList *g_list_last( GList *list );

GList *g_list_first( GList *list );

gint g_list_length( GList *list );

void g_list_foreach( GList *list,
GFunc func,
gpointer user_data );

<<< Previous Home Next >>>
GLibUp 单向链表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值