1、为什么学习数据结构
学习C语言: 为了让我们学会如何写程序
学习数据结构:为了让我们学会如何简洁,高效的写程序
2、数据结构研究是什么
数据结构指的是数据的逻辑结构和存储结构及其操作
2-1、数据
计算机处理的对象(数据)已不再单纯是数值,而更多的是集合
2-2、逻辑结构
数据元素与数据元素之间的关系
2-2-1、1对1 (线性关系) (线性表)
2-2-2、1对多 (树形关系) (树)
2-2-3、多对多 (网状关系) (图)
2-3、存储结构
逻辑结构在计算机中的具体实现方法,分为顺序存储方法、链接存储方法、索引存储方法、散列存储方法。
2-3-1、顺序存储方法(顺序表)
顺序存储结构的特点:
(1)逻辑上相邻的元素 ai, ai+1,其存储位置也是相邻的;逻辑相邻,物理也相邻
(2)对数据元素ai的存取为随机存取或按地址存取。 (存取比较方便)
(3)存储密度高。存储密度D=(数据结构中元素所占存储空间)/(整个数据结构所占空间)。
顺序存储结构的不足:
对表的插入和删除等运算的时间复杂度较差。 (插入和删除不是很方便)
线性表的顺序存储结构有存储密度高及能够随机存取等优点。
但存在以下不足:
(1)要求系统提供一片较大的连续存储空间。
(2)插入、删除等运算耗时,且存在元素在存储器中成片移动的现象;
时间复杂度是O(N)
2-3-2、链式存储
链表是一种重要的链式存储结构,数据节点通过指针相互连接。每个节点包含数据和指向下一个节点的引用,可以动态地添加或删除元素,不需要预先知道元素的数量,但查找某个特定元素的速度相对较慢,因为它可能需要遍历整个链表。
时间复杂度为O(1)
2-3-3、散列表(哈希存储)
也称为关联数组,它通过哈希函数将数据的关键字映射到内存的特定位置,实现了常数时间的平均查找。散列表的存储效率高,但需要解决哈希冲突,而且插入和删除复杂度取决于哈希函数的质量和处理冲突的方法。
2-4、存储结构的对比
如果数据项的大小已知且访问频率均匀,顺序存储可能是最好的;
如果频繁增删而查询较少,则链式存储更为合适;
而对于快速查找的需求,哈希存储是首选。