GLib双向链表

#include <stdio.h>
#include <glib.h>


/**
*显示双向链表的内容
*/
void display_list(GList *list)
{
GList* it=NULL;
for(it=list;it;it=it->next)
{
g_printf("%s\t",it->data);
}
printf("\n");
}


int main(int agrc ,char **argv)
{
GList* list=NULL;
//向链表尾部追加节点
list=g_list_append(list,"hello1");
list=g_list_append(list,"hello2");
list=g_list_append(list,"hello3");
display_list(list); 
//向链表头部追加节点
list=g_list_prepend(list,"zero");

display_list(list); 
//查找链表中的节点
GList* it=NULL;
it=g_list_find(list,"hello2");
printf("find hello2 ,it's value=%s\n",it->data);
//确定链表指向第几个节点
int index=0;
index=g_list_position(list,it);
printf("hello2 index postion=%d\n",index);
//获取链表特定位置的置
it = g_list_nth(list, 1);
  printf("%s/n", it->data);
  
  //从链表中删除一个元素
  list=g_list_remove(list,"hello3");
  display_list(list);
  
  //向链表中插入个元素
  list=g_list_insert(list,"hello3-",3);
  display_list(list);


  //采用内循环遍历链表节点 
  //g_list_foreach(list, (GFunc)printf, NULL);
 // printf("\n");
  
  //取链表的最后一个节点
  GList* last = g_list_last(list);
  //从最后一个节点开始遍历链表 
  for (it = last; it; it = it->prev) {
      printf("%s", it->data);
  }
  printf("\n"); 
  //释放链表
  g_list_free(list);
     
return 0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值