什么是数据结构
官方:
数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。
我的理解:
程序设计 = 数据结构 + 算法
数据结构分为逻辑结构和物理结构。
逻辑结构
逻辑关系是指数据元素之间的前后关系,而与他们在计算机中的存储位置无关
- 集合结构
集合结构中的数据元素同属于一个集合,他们之间是并列的关系,除此之外没有其他关系。 - 线性结构
线性结构中的元素存在一对一的相互关系 - 树形结构
树形结构中的元素存在一对多的相互关系 - 图形结构
图形结构中的元素存在多对多的相互关系
物理结构
物理结构研究的是数据在存储器中存放的形式。 存储器主要针对于内存而言,
数据在内存中的存储结构,也就是物理结构,分为两种:顺序存储结构和链式存储结构。
- 顺序存储结构
数组就是顺序存储结构的典型代表
顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的 - 链式存储结构
链式存储结构的数据元素之间是通过指针来连接的
可以通使用指针来找到某个数据元素的位置,然后对这个数据元素进行一些操作
算法
算法代表着用系统的方法描述解决问题的策略机制。
算法具有五个基本特征:输入、输出、有穷性、确定性和可行性。
算法的设计要求
要设计一个好的算法,需要考虑以下4个特性(其实多半是废话)。
- 正确性
废话,谁会设计一个不能够解决问题的方法。 - 可读性
指算法无论是从设计思路上,还是从注释方面,都要能够保证算法是可读的,也就是可以被其他人员能够读懂的。其实也是废话,这是一个优秀的程序员必备的。 - 健壮性
通俗的讲,一个好的算法应该具有捕获异常/处理异常的能力。另外,对于测试人员的压力测试、边界值测试等刁难的测试手段,算法应该能够轻松的扛过去。 - 时间效率高和存储量低