一、数据结构基本概念
数据:人们利用文字符号、数字符号以及其他规定的符号对现实世界的事物及其活动所做的抽象描述。(学号、姓名、性别)
数据元素:表示一个事物的一组数据。是数据(集合)中的一个“个体”,是
数据的基本单位。((学号和姓名和性别的整体的一组数据)
数据项:
构成数据元素的数据,是数据结构中讨论的最小单位。(学号和姓名和性别的整体)
抽象数据元素:没有实际含义的 数据元素。
抽象数据类型:没有确切定义的 数据类型。
数据的逻辑结构:数据元素之间的 相互联系方式。
数据的存储结构:数据元素在计算机中的 存储方式。
数据的操作:对一种 数据类型的数据 进行的某种处理。
数据的操作集合:对一种数据类型的数据进行的 所有操作。
数据的逻辑结构
集合:数据元素间除“同属于一个集合”外,无其它关系。
线性结构:除第一个和最后一个数据元素外,每个数据元素只有一个前驱和一个后继数据元素。
树结构:除根结点外,每个数据元素只有一个前驱数据元素,可有0个或若干个后继数据元素。
图结构:每个数据元素可有0个或若干个前驱数据元素和0个或若干个后继数据元素。
数据的存储结构
顺序存储结构:将逻辑上相邻的结点存储在物理位置相邻的存储单元中。结点间的逻辑关系由存储单元的邻接关系来体现。
链接存储结构:指逻辑上相邻的结点不一定存储在相邻的存储单元,结点间的逻辑关系由附加的指针字段来体现。
索引存储结构:在存储结点信息的同时,建立附加的索引表。索引表中的每一个索引项由关键字(唯一标识某结点)和该结点的地址组成。
散列存储结构:构造一个函数,以结点关键字作自变量,函数返回该结点的存储地址。
二、算法概述
1. 算法的定义
算法(algorithm)是指在解决问题时,按照某种机械步骤一定可以得到问题结果(有解时给出问题的解,无解时给出无解的结论)的处理过程。
算法是解一确定类问题的任意一种特殊的方法。
在计算机科学中,算法是用
计算机解一类问题的精确、有效方法的代名词。
例:
警察抓小偷
警察局抓了a,b,c,d四名偷窃嫌疑犯,其中只有一人是小偷。审问中
a说:“我不是小偷。”
b说:“c是小偷。”
c说:“小偷肯定是d。”
d说:“c在冤枉人。”
现在已经知道四个人中三人说的是真话,一人说的是假话,问到底谁是小偷?
算法描述:
for(x=1;x<=4;x++)
if ((x!=1)+(x==3)+(x==4)+(x!=4)==3)
2. 算法性质
确定性:算法每种运算必须有确切定义,不能有二义性。
能行性:
算法中有待实现的运算都是基本的运算,原理上每种运算都能由人用纸和笔在有限的时间内完成。
输入:
每个算法有
0
个或
多
个输入。
输出:
一个算法产生
一个
或
多个
输出,这些输出是同输入有某种特定关系的量。
有穷性
/
有限性:
一个算法总是在执行了有穷步的运算之后终止。
(程序是算法的具体实现,可以不满足有穷性)
3.
算法的衡量指标
正确性,可读性,健壮性,高效率与低存储量。
4. 算法描述
算法 = 控制结构 + 原操作
主要方式:
自然语言:
日常所用的语言
流程图
盒图
PAD
图:
问题分析图(Problem Analysis Diagram, 简称PAD)表示的算法是一个二维树形结构图,层次感强、嵌套明确且有明确的控制流程。
伪代码
计算机程序设计语言