GLib双向链表

来源:互联网 发布:开淘宝需要多少资金 编辑:程序博客网 时间:2024/04/30 14:26
#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