数据结构3----线性表中链式结构的其他几种实现(霜之小刀)
2017-02-13 20:21
525 查看
欢迎转载和引用,若有问题请联系
若有问题,请联系
Email : lihn1011@163.com
QQ:2279557541
包括
静态列表
循环链表
双向链表
而在我看来,这几种链表基本没法独立成一种数据结构,只是对前面的扩展而已,有些甚至都意义不大,比如静态链表。
下面我来一个一个的介绍
所以得静态链表的意思就是固定大小的,由索引相互联系的数据结构。
《大话数据结构》住列举的例子是这样的:
在连续的内存空间内,以数组的形式实现,数组中每个数据的包含要存储的数据和索引。
代码简单描述下:
在<大话数据结构>这本书中,对这个结构讲的比较详细,由于c和c++还是有些区别的,所以这里的实现看起来更加的简洁,而这种结构的示意图如下所示。
下面来说以下他的添加和删除操作
举个实例
下图描述的是一个普通的静态链表的状态
然后我们往里面添加一个数据,举个特殊的例子,在数据3和数据4之间添加一个数据5
发现只需要修改其前面一个的索引和后面所有数据的索引即可。
而删除一个数据同添加一样,只不过是个逆过程罢了。
比如
静态循环链表
静态双向链表
循环双向链表
等等各种组合,一个一个讲意义不大,说者无味,听者无趣~
参考内容 《大话数据结构》 陈杰
若有问题,请联系
Email : lihn1011@163.com
QQ:2279557541
前言
链式结构除了上一篇结构中所讲的单项链表外, 还有另外几种。按照<大话数据结构>中所说包括
静态列表
循环链表
双向链表
而在我看来,这几种链表基本没法独立成一种数据结构,只是对前面的扩展而已,有些甚至都意义不大,比如静态链表。
下面我来一个一个的介绍
静态链表
首先,静态的意思就是链表的大小是固定的,链表的意思是每一项数据间是需要索引联系的所以得静态链表的意思就是固定大小的,由索引相互联系的数据结构。
《大话数据结构》住列举的例子是这样的:
在连续的内存空间内,以数组的形式实现,数组中每个数据的包含要存储的数据和索引。
代码简单描述下:
template<class DataType, int max_size> class StaticLink { public: struct LinkStu { DataType m_data; //保存数据 int m_next_idx; //指向下一个数据元素的数组下标索引 }; private: LinkStu m_item_list[max_size]; //用于保存整个静态链表 unsigned int m_size; //整个数组的大小 };
在<大话数据结构>这本书中,对这个结构讲的比较详细,由于c和c++还是有些区别的,所以这里的实现看起来更加的简洁,而这种结构的示意图如下所示。
下面来说以下他的添加和删除操作
举个实例
下图描述的是一个普通的静态链表的状态
然后我们往里面添加一个数据,举个特殊的例子,在数据3和数据4之间添加一个数据5
发现只需要修改其前面一个的索引和后面所有数据的索引即可。
而删除一个数据同添加一样,只不过是个逆过程罢了。
这种结构的意义是什么呢?书上说的是,插入一个数据只需要修改索引,将索引一个个修改完就好,避免了数据的拷贝。这种看法我是不认同的,因为如果我们把上一章中顺序存储结构保存的变量类型改为指针,那么其拷贝的工作量同修改索引基本是一样的。那么书中的意思我之能理解为也许是对没有指针的编程语言说的。
循环链表
双向链表
这两种链表很常见,其实意思和他字面的意思基本一致。 循环链表指的是链表尾索引到链表头构成的一个环状的链表 双向链表指的是,每个数据节点除了有向后的索引外再加一个向前的索引。 具体的示意图我就不画了。
其他类型的线性表
之所以在文章的开头我说这几种链表只是对前面链表的扩展,其实更主要的是,按照这个扩展我们还能扩展出很多类型的线性表比如
静态循环链表
静态双向链表
循环双向链表
等等各种组合,一个一个讲意义不大,说者无味,听者无趣~
参考内容 《大话数据结构》 陈杰
相关文章推荐
- 数据结构2----线性表顺序存储和链式存储的实现(霜之小刀)
- 数据结构之线性表的链式表示和实现
- 数据结构(2):线性表的链式表示和实现
- 数据结构教程 第八课 线性表的链式表示与实现
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- 数据结构—线性表的链式表示和实现
- 数据结构之线性表――链式存储结构之单链表(php代码实现)
- 数据结构算法代码实现——线性表的链式表示与实现(单链表)(三 )
- 链式结构线性表的实现
- 线性表的链式存储结构之单链表类的实现_Java
- 迎接2012之集合和泛型(2)------线性表的链式结构基本实现
- 数据结构之线性表链式存储
- 数据结构之线性表的链式存储
- 数据结构实验之图书馆借书线性表的顺序和链式存取结构的应用
- 线性表的顺序表示和实现 - 数据结构
- 线性表的链式存储结构之单链表结点类的实现_Java
- 数据结构之:线性表的顺序表示和实现
- 数据结构(五)——双链表、链式栈、链式队列 及实现
- [C++]数据结构:线性表的公式化描述和链式描述的结构特点与基本操作
- 线性结构的顺序存储和链式存储的实现代码(二)