博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
专用链表VS通用链表
阅读量:6916 次
发布时间:2019-06-27

本文共 1119 字,大约阅读时间需要 3 分钟。

hot3.png

       
 
1、概念
专用链表:指该链表的实现和调用耦合在一起,只能被一个调用者使用,而不能单独在其他地方被重用。
通用链表:它具有通用性,可以再多处被重复使用。通用链表能够存放任何数据类型的数据,而专用链表只能存储
单一的数据。
typedef int Type;typedef struct _DListNode{	struct _DListNode* prev;	struct _DListNode* next;	Type data;}DListNode;

        【注解】这样的链表数据结构设计算不上是通用的,因为存放整数时编译一次,存放字符串时,重新定义Type再编译一次,存放其他类型同样要重复这个过程,无法同时使用多个数据类型。

        再看如下的数据结构设计:

typedef struct _DListNode{	struct _DListNode* prev;	struct _DListNode* next;	void* data;}DListNode;
【注解】此处不同之处在于,只保存对象的指针,存取效率高,是C语言中常见的做法。存放整数时,可以把void*强转成整数,以避免内存分配。在目前大部分嵌入式开发中,大部分情况下,链表都存放结构体的。
       
 
2、各自特点与使用范围
专用链表的优点(从局部来看)
a、性能更高。专用链表的实现和调用捆绑在一起,可以直接访问数据成员,省去了包装函数带来的性能开销,可以提高时间性能。专用链表无需实现完整的接口,只要满足自己的需求就行,
生成代码更小,因此可以提高空间性能。
b、依赖更少。自己实现不用依赖于别人。有时有现成的库可用,但是把整个库移植过去会带来存储空间的开销,那么可以自己实现一个专用的链表。并且有些嵌入式产品,数据的存储,严格依赖于自己行业的协议准则。所以必须得实现自己的专用链表。(基础库除外)
c、实现简单。
通用链表的优点(从全局看)
a、可靠性高。复杂的东西意味着不可靠,但它是可以重复使用的,其存在的问题会随每一次重用而被发现和改正,慢慢就会形成一个可靠的函数库。
b、开发效率高。复杂的东西也意味着更高的开发成本,同样因为它是可以重复使用的,开发成本会随每一次重用而降低,从整个项目来看,会大大提高开发效率。
【小结】链表是最常用的数据结构之一,通过学习通用链表,进而学习软件设计的方法,是最终的目的。链表只是其中的载体之一。 

引用:

1、《系统程序员成长计划》   李先静 编著
(此书让我获益颇多,避免了在繁众的大量的重复的纯语法书籍中浪费时间,着眼于基础,着眼于设计。)

转载于:https://my.oschina.net/mavericsoung/blog/177349

你可能感兴趣的文章
MYSQL-5.7.11安装记录
查看>>
我的友情链接
查看>>
检查文件下面时候存在ini文件
查看>>
纵向比较ISIS、OSPF
查看>>
我的友情链接
查看>>
毕业后的五年拉开大家差距的原因在哪里?
查看>>
scala中的空
查看>>
我的友情链接
查看>>
python文件操作中write与writelines的区别
查看>>
基于linux 的mysql的主从同步配置读写分离
查看>>
javadoc的用法
查看>>
大地 Ghost Win7Sp1x86 装机版Y9.8
查看>>
Date的简单介绍
查看>>
Windows/Mac跑起XDAG源码
查看>>
C语言字符串操作函数
查看>>
富文本编辑器summernote使用
查看>>
马哥2016全新Linux+Python高端运维班第三周作业
查看>>
linux后台进程启动springboot
查看>>
Seo界神话 360好搜
查看>>
JavaScript闭包
查看>>