专用链表VS通用链表

          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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值