基本数据结构 (1.2)——链式表
摘要:前段时间工作比较忙,然后一起玩的同事都在看《男人帮》,于是花了一周多看完,以免与其他人没有共同话题。继续回到算法学习,链式表多用于动态分配和增长的内存块管理,与线性表表相比其优缺非常明显:优点是无需预先知道表的大小,随使用动态增长;缺点也是由此带来的,反复开辟内存管理麻烦且容易形成碎片。 这里先直接给出实现的单链表的代码: LListDemo.zip。下面讨论几个问题: 1.提高单链表的访问效率:对于单链表(仅在当前节点存在指向下一个节点的指针),在当前位置插入新节点操作时需要修改前一个节点(前驱)指向当前节点的指针,那么普通做法需要从头节点起直至遍历到前驱位置,显然效率低下;删除...
阅读全文
基本数据结构 (1.1)——线性表
摘要:线性表Arrary List也就是基于数组实现的表结构,由于基于数组实现,所以其特点非常明显:随机访问(访问指定序号的节点)时间开销O(1),插入删除(在当前位置插入删除)时间开销O(N)。 表结构的操作主要有创建、插入(头、尾、当前位置)、删除(头、尾、当前位置)、查找(指定键值、指定序号)和游走(指向头、尾、上一个节点、下一个节点),一般来讲基于数组的表结构都是预先指定最大容量,这样使用起来会比较不方便,所以可以利用realloc实现表结构的扩容。 Arrary List实现的代码可以参见附件(辅助异常检查CheckError.h,头文件AList.h,代码文件AList.c,模块...
阅读全文
基本数据结构 (0)——提纲
摘要:数据结构是抽象出来的一些存储结构,主要目的在于将一些关系紧密的值集中到一起,从而方便使用(如原先需要多个值进行操作的函数可以简化为仅需要一个结构),同时,可以预先定义针对同一结构的操作接口,从而达到模块化和重复使用的目的。 基本的数据结构由简到繁可以划分为表、树、图三个大类。表是一维的结构,即所有节点的关系可以拉成直线来形象考虑;树则是分叉的结构,从根节点不断分叉形成分支,与自然界的树很相似;图则是一堆散乱的节点,如果两个节点直接有关联则连接成一条边,最终形成平面或者更加复杂的网络。将上述三种基本的数据结构进一步划分又可以得到更多的类型,考虑到使用频率,拟在后面的时间依次实现如下的数据结...
阅读全文
计划1.3复习C语言结束,回到算法学习
摘要:经过了两周多终于看完《C程序设计语言》,从栈中返回到算法的学习,经过考虑没有数据结构可能实现算法比较不靠谱,所以打算增加《数据结构与算法分析:C语言实现》这本书与《算法导论》一起看,希望12月中旬能够结束吧。 BSKER于2011.10.31
阅读全文