2010年1月17日

GLib GList

Doubly-Linked Lists
//-- test_GList.c --
#include <stdio.h>
#include <stdlib.h>
#include <glib.h>

void print_iterator(gpointer data, gpointer user_data) {
g_print(user_data, data);
}

int main(void) {
{
GList* list = g_list_append(NULL, "First");
list = g_list_append(list, "Second");
g_list_foreach(list, (GFunc) puts, NULL);
puts(((GList *) g_list_previous(g_list_last(list)))->data);
g_list_free(list);
}
puts("---");
{
GList* list = g_list_append(NULL, g_strdup("First"));
list = g_list_append(list, g_strdup("Second"));
list = g_list_append(list, g_strdup("Third"));

GList* temp_list = g_list_previous(g_list_last(list));
list = g_list_remove_link(list, temp_list);
puts(temp_list->data);
g_free(temp_list->data);

g_list_foreach(list, print_iterator, "%s\n");
g_list_foreach(list, (GFunc) g_free, NULL);
g_list_free(list);
}
return EXIT_SUCCESS;
}

/*
$ gcc `pkg-config --cflags --libs glib-2.0` -o test_GList test_GList.c
$ ./test_GList
First
Second
First
---
Second
First
Third
*/

沒有留言:

網誌存檔