又一个周一,现在怎么抓都抓不住时间了。       

         上午继续看socket的系统调用,在找与卷二上与mbuf相似的结构体。试着看了几个调用,不知其然。想着系统调用的流程忘了,上网看了看,现在3.*的和之前自己板子上移植2.6的又变了一些内容,依稀记得系统调用号的那个unistd.h的那个头文件现在不是直接放在相应arch下面的kernel的asm里了,好像放在uabi还是什么的。晚上想着回来在自己的电脑上新加的系统调用试试,没搞成,周末要搞下的。

         下午没事儿想起去年面试时候一个静态链表的问题,什么问题忘了,想着就顺便想想,写写练练手。一个下午只把创建和删除写出来了。

记录下思路:静态链表归根还是一个数组,只不过数组里有个next域可以指向下一个下表。所以自己就写成可扩展的,当静态链表元素无限制。

再着,书上实现的时候好像是第一个元素未存有效数据,而是让其下表指向第一个空的数据节点,最后一个空的下表指向第一个非空的存有有效数据的下表,最后一个有效数据的next指向0,表示结束。这种实现在增加新数据的时候,比较麻烦。自己多维护两个指针一个指向第一个空闲节点,另一个指向第一个有效数据的节点。还有一个用来记录数组的len。在数据域增加了key,用于稍后实现基数排序。

         基数排序之前听过N边,知道是桶排序,就是没看,感觉很难的样子。今天趁着复习静态链表的机会,也看了下,挺拓展思路的。一般熟悉的插入,选择,冒泡,归并,查找树之类的,都是基于比较的,这个就是分分合合,合合分分就有序了。思路挺简单的想想,先说容易理解的,从高位到低位排即MSD:给你一串数,让你排序,你可以先找出最高位数字大的让排在一起,然后按照最高位的数字分成0--9,让其下面的根据第二高位的排,最后一合并,就是有序的。LSD这个算法上更易实现,不过理解呢,一般需要点空间想象力,脑子里有几个桶吧。先排低位,即个位,拍好之后,再对整体排十位,依次到高位,写着想着,也不难理解,不需要什么空间想象力,扯了。挺容易的。至于实现上,MSD递归很简单,不递归的,么想,不知道注意点在那里。LSD注意点:每次比较收集前,先顺换遍历下,每个桶里的数据个数,好确定,每个桶里的数据都从哪个下表处开始存放。时间复杂度,自己想吧,稳定的排序。

        现在亟待解决的 :1. 上述算法要实现个可重用的

                                 2. xml解析器那家伙写的,赶紧看看给他说说,莫伤友人心

                                 3. C语言main里面环境变量,参数,局部变量在栈里怎么存放的

                                 4. TCP的种种,特别是为什么TCP header不需要Total len,因为可能会分片的,尽管很难。(情况?已知)

                                 5. 红黑树,拖了太长时间了

                                 6. 添加系统调用,及sock网络函数下面的具体流程。

                          2013/08/11       23:46          Monday  晴               懈怠

 
 posted on 2014-08-11 23:47  chagmf  阅读(111)  评论(0)    收藏  举报