数据结构学习笔记(一)
Bcboy的话:
近期,我又重新开始学习数据结构。由于所用教本为华工版《数据结构》,里面错误繁多,便有了把学习过程中的心得和重点内容整理一遍的想法,以便以后重看时不再迷惑,便写了这份《数据结构学习笔记》。
解脱之味不读引,快乐之果不独尝,发表是最好的记忆,于是便借csdn这块沃土将其发表,希望能给迷惑者一点小帮助。
e_mail:zl_cool@sina.com
第一章 绪论
1. 1数据结构
定义:数据结构是一门研究程序设计中计算机操作的对象以及它们之间的关系和运算的一门学科。
1. 2基本术语
数据(data):描述客观事物的数、字符以及所有能输入到计算机中被计算机程序加工处理的信息集合。
数据元素(data element):数据的基本单位,即数据这个集合中的一个客体。一个数据元素可以只有一个数据项,亦可以由若干逻辑上有联系的相关数据项组成。
例如:一个学生档案表中,姓名、性别、年龄为数据项,它们可以共同确定一个数据元素;每一项也可以单独定义一个数据元素。
姓名:
……
性别:
……
年龄
……
……
……
数据对象(data object):性质相同的数据元素的集合。它是数据的一个子集。可为无限集or有限集。
数据结构(data structure):(略……)
1. 逻辑结构(logical structure):指各数据元素间的逻辑关系,是用户按使用需要建立的,并呈现在用户面前的数据元素的结构形式。(又称“数据结构”)
2. 物理结构(physical structure):即数据的存贮结构,是指数据在计算机内世纪的存贮形式。(又称“存贮结构”)
每种数据结构都可通过映象的方式得到相应的存贮结构。
1. 顺序映象:顺序存贮结构
2. 非顺序映象:链式存贮结构
数据类型(data type):可以认为,数据类型是程序设计语言中已经实现的数据结构。
1. 3数据结构的运算
l 建立(create)和消除(destroy)一个数据结构的运算;
l 在数据结构中,插入(insert)和删除(delete)一个数据元素;
l 对一个数据结构进行访问(access)和修改(modify)的运算;
l 对一个数据结构进行排序(sort)和查找(search)的运算。
1. 4算法和算法描述
1.4. 1算法(algorichm)
定义:执行特定计算的有穷过程。
特点:
(1) 动态有穷:当执行一个算法的时候,不论是何种情况,在经过了有限步骤后,这个算法一定要终止。
(2) 确定性:算法中的每条指令都必须是清楚、无二义的。
(3) 输入:具有0个或0个以上的由外界提供的量。
(4) 输出:产生一个或多个量(结果);
(5) 可行性:每条指令都充分基本,原则上可由人仅用笔和纸也能在有限的时间内完成。
算法和程序的区别:程序未必能满足动态有穷。
1.4. 2算法的描述(略……)
1.4.3算法分析
算法需用时间和空间来衡量。(趋势:以后时间将会更重要)
衡量方法:粗略估计算法中语句执行的最大次数。