C++ 动态数据结构(一)
2014-12-27 09:26
225 查看
1.我们为什么要用动态数据数据结构呢?
因为类型相同的数据用数组存储存在许多的问题:
(1)定义静态数组时必须指定数组的元素个数,此后无法更改数组大小,带来很多的不便,可能造成空间浪费或不足。
(2)用指针可以申请动态数组,空间不会浪费或不足,由于动态申请的空间必须是连续的区域,所以当申请“大片”的连续区域时,有可能会失败。
(3)在数组中插入或删除元素时需要大量移动元素,效率低。
所以动态数据结构就出现了!
态数据结构:
(1)可以利用动态内存分配,实现动态数组,克服数组大小固定的问题。
(2)但仍然不能解决插入、删除时移动大量元素的问题。
(3)可以使用链表克服上述问题。
2.单链表
(1) 链表是一种是最常用的动态数据结构,它是对动态获得的内存进行组织的一种结构。
(2)与数组不同,数组元素逻辑上相邻物理地址上也相邻, 而链表结构其数据元素作为一个个结点的数据域。
(3)结点中另有指针域存储逻辑上相邻的其他元素的起始地址,单链表较常用。
链表结构的优点是:
(1)系统不必为应用程序分配一组连续的空间,可以充分利用系统的零散空间,有一个元素就生成一个结点,空间不浪费。
(2)如果内存空间足够大,理论上这一批数据的容量不受限制。
(3)对于插入、删除等操作不必通过移动元素实现,效率高。
一个单链表示例:
因为类型相同的数据用数组存储存在许多的问题:
(1)定义静态数组时必须指定数组的元素个数,此后无法更改数组大小,带来很多的不便,可能造成空间浪费或不足。
(2)用指针可以申请动态数组,空间不会浪费或不足,由于动态申请的空间必须是连续的区域,所以当申请“大片”的连续区域时,有可能会失败。
(3)在数组中插入或删除元素时需要大量移动元素,效率低。
所以动态数据结构就出现了!
态数据结构:
(1)可以利用动态内存分配,实现动态数组,克服数组大小固定的问题。
(2)但仍然不能解决插入、删除时移动大量元素的问题。
(3)可以使用链表克服上述问题。
2.单链表
(1) 链表是一种是最常用的动态数据结构,它是对动态获得的内存进行组织的一种结构。
(2)与数组不同,数组元素逻辑上相邻物理地址上也相邻, 而链表结构其数据元素作为一个个结点的数据域。
(3)结点中另有指针域存储逻辑上相邻的其他元素的起始地址,单链表较常用。
链表结构的优点是:
(1)系统不必为应用程序分配一组连续的空间,可以充分利用系统的零散空间,有一个元素就生成一个结点,空间不浪费。
(2)如果内存空间足够大,理论上这一批数据的容量不受限制。
(3)对于插入、删除等操作不必通过移动元素实现,效率高。
一个单链表示例:
相关文章推荐
- C++ 动态数据结构(二)
- C++ 动态数据结构(四)
- c++代码之-------动态数据结构
- C++ 动态数据结构(三)
- C++ 动态数据结构(五)
- [FAQ] 数据结构用 C 和 C++ 描述有什么区别
- C#调用C++动态链接库中的函数指针与函数指针结构
- 打造 C++ 最灵活动态数组结构 (一)
- 打造 C++ 最灵活动态数组结构 (二)
- 再看C、C++、数据结构(二)
- 数据结构之顺序表C++实现
- C++数据结构——堆,二叉搜索树及Huffman编码输出
- 在SQL Server中动态修改数据表结构
- Flex 和C++ 之间传输结构体数据--用XML传输
- 数据结构与算法(C++)之一——顺序表(SeqList)
- 最近学习C++ 数据结构 尝试代码就放上来吧 初学者适用
- (摘)面向对象c++数据结构之基本数据结构-链表-使用链表管理器(连载中)
- 数据对象结构的动态建立与访问
- SQL Server数据对象结构的动态建立与访问
- 动态使用结构数据大小