![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
glib
文章平均质量分 79
linjianfengqrh
这个作者很懒,什么都没留下…
展开
-
glib数据存储的疑惑
我们都知道glib使用gpointer这个类型来存储数据。这样做的好处就是可以存储多种类型的数据,比如存储int,float类型的数据,只需要将指针传进去即可。不过我在使用glib时却遇到了一些令人疑惑不解的东西。 由于glib使用gpointer来存储数据,而gpointer只是一个void类型的指针(typedef void* gpointer),所以存储时应该将数据的指针传递给函数。比如G原创 2012-02-23 08:29:43 · 583 阅读 · 0 评论 -
看glib是如何实现归并排序的
我们知道在比较排序算法中,归并排序可以实现O(n*logn)的时间复杂度。对于数组来说,他不是原地排序,需要申请额外的空间。不过glib是用链表来表示一个GList的,所以在GList当中,只需要修改链表的前后指针即可。 归并排序的一般算法为: void MergeSort(Node l[], int m , int n) { if(m<n){ MergeSort(l,原创 2012-02-24 07:59:04 · 442 阅读 · 0 评论 -
glib是如何实现hashtable的
hash表做为一个数据结构,具有快速查找的优势,理想情况下,每一次查找的时间复杂度都是O(1)。glib在文件ghash.c中实现了hashtable,今天学习了一下源代码,感觉收获还是蛮多的,下面对源代码做一个解析。 hash表之所以能做到快速查找,是因为他使用了数组做为容器。在glib中,hashtable这个数据结构有三个数组分别存放key,value和hash值。 struct _GH原创 2012-02-24 22:29:10 · 1241 阅读 · 0 评论