数据结构C语言版-PPT课件
合集下载
数据结构C语言版ppt课件-PPT精品文档
…
an-1,0 an-1,1
…
an-1,n-1
an-1,0 an-1,1
…
…
Ann
a0,0 a1,0
a0,1 a1,1
… …
a0,n-1 a1,n-1
Ann
a0,0 a1,0
a1,1
…
…
…
an-1,n-1
对称阵
中国网页设计 xin126
下三角矩阵
第5章 数组和广义表
中国网页设计 xin126
数据结构
(C语言版)
严蔚敏、吴伟民编著 清华大学出版社 学习网站:xin126/list.asp?id=301
中国网页设计 xin126
第5章 数组和广义表
主要内容:
一、数组的定义 二、数组的表示和实现 三、矩阵的压缩存储 四、广义表的定义 五、广义表的存储结构
中国网页设计 xin126
第5章 数组和广义表
0 0 0 0 0 0
0 0 0 0 0 0
中国网页设计 xin126
第5章 数组和广义表
(2) 稀疏矩阵的存储: 若按常规方法进行存储,零值元素会占了很大空间 因此对于稀疏矩阵的存储通常采用以下两种方式: 三元组表和十字链表进行存储。
中国网页设计 xin126
第5章 数组和广义表
中国网页设计 xin126
第5章 数组和广义表
以行序为主序的求址公式:
假设每个数据元素占L个存储单元,则二维 数组A中任一元素aij的存储位置可由下式确定: LOC(i, j) = LOC(0, 0) + (n×i + j)*L 式中,LOC(i, j)是aij的存储位置,LOC(0, 0)是a00的存储位置,即二维数组A的起始存储 位置,也称为基地址或基址。b2是数组第二维 的长度,即数组A(m×n)中的列数n。
数据结构(C语言版中)清华大学出版社ppt
p->data=x;
p->next=top; top=p;
修改栈顶指针
return top;
} 25
链栈的出栈操作
an出栈,使工作指针q 指向要出栈结点,然
后修改栈顶指针: top=top->next
26
链栈出栈操作
LinkStack *pop( LinkStack *top)
{ LinkStack *q; if(!top) /*说明指针top指向NULL*/ {printf(“\n链栈是空的!”); return NULL;} q=top; top=top->next; free(q); return top;
29
void conversion(int N, int r)
解题思路如下:
{ int x=N,y=r; SeqStack *s; /*是顺序栈*/
N是十进制数,要将N 转换成r进制数
s=initStack( ); /*构造一个顺序栈*/ while(N!=0) { push(s, N %r ); /*将N%r入栈*/
}
17
例3.1 用main函数以及display函数,调试上述各种栈的基
本操作算法。
#define Maxsize 50
typedef int datatype;
typedef struct{
{datatype stack[Maxsize]; int top;
}SeqStack;
void display(SeqStack *s) /*显示栈中所有元素值*/
15
顺序栈的入栈操作——例如用堆栈存放(A,B,C,D)
高地址M 低地址L
top
top D
数据结构ppt(c语言版李春葆)
查找的结果为给出整个记录的信息,或指示该记录在查找 表中的位置;
否则称“查找不成功”,此时查找的结果可给出一个 “空”记录或“空”指针。
如何进行查找? 取决于查找表的结构,即记录在查找表中所处的位置。然 而,查找表本身是一种很松散的结构,因此,为了提高查找 的效率,需要在查找表中的元素之间人为地附加某种确定的 关系,即用另外一种结构来表示查找表。
int length; //表长度 }SSTable;
11
顺序查找(Sequential Search)的查找过程:从表中最后一个 记录开始,逐个进行记录的关键字和给定值的比较,若某个记 录的关键字和给定值比较相等,则查找成功,找到所查记录; 反之,若直至第一个记录,其关键字和给定值比较都不等,则 表明表中没有所查记录,查找不成功。
对查找表经常进行的操作有: (1)查询某个“特定的”数据元素是否在查找表中; (2)检索某个“特定的”数据元素的各种属性; (3)在查找表中插入一个数据元素; (4)从查找表中删除某个数据元素。
2
查找表的分类: 静态查找表(Static Search Table):
若对查找表仅作查询和检索操作,则称此类查找表为静 态查找表。在查找过程中,查找表本身不发生变化。
对静态查找表进行的查找操作称为静态查找。
动态查找表(Dynamic Search Table): 在查找过程中同时插入查找表中不存在的数据元素,或
者从查找表中删除已存在的某个数据元素,此类表为动态查 பைடு நூலகம்表。
3
关键字(Key): 是数据元素(或记录)中某个数据项的值,用它可以标
识(识别)一个数据元素(或记录)。 若此关键字可以唯一地标识一个记录,则称此关键字为
10
8.1.1 顺序表的查找
否则称“查找不成功”,此时查找的结果可给出一个 “空”记录或“空”指针。
如何进行查找? 取决于查找表的结构,即记录在查找表中所处的位置。然 而,查找表本身是一种很松散的结构,因此,为了提高查找 的效率,需要在查找表中的元素之间人为地附加某种确定的 关系,即用另外一种结构来表示查找表。
int length; //表长度 }SSTable;
11
顺序查找(Sequential Search)的查找过程:从表中最后一个 记录开始,逐个进行记录的关键字和给定值的比较,若某个记 录的关键字和给定值比较相等,则查找成功,找到所查记录; 反之,若直至第一个记录,其关键字和给定值比较都不等,则 表明表中没有所查记录,查找不成功。
对查找表经常进行的操作有: (1)查询某个“特定的”数据元素是否在查找表中; (2)检索某个“特定的”数据元素的各种属性; (3)在查找表中插入一个数据元素; (4)从查找表中删除某个数据元素。
2
查找表的分类: 静态查找表(Static Search Table):
若对查找表仅作查询和检索操作,则称此类查找表为静 态查找表。在查找过程中,查找表本身不发生变化。
对静态查找表进行的查找操作称为静态查找。
动态查找表(Dynamic Search Table): 在查找过程中同时插入查找表中不存在的数据元素,或
者从查找表中删除已存在的某个数据元素,此类表为动态查 பைடு நூலகம்表。
3
关键字(Key): 是数据元素(或记录)中某个数据项的值,用它可以标
识(识别)一个数据元素(或记录)。 若此关键字可以唯一地标识一个记录,则称此关键字为
10
8.1.1 顺序表的查找
《数据结构C语言》课件
堆排序
总结词
比较型时间复杂度最快的排序算法之一
详细描述
堆排序是一种树形选择排序,是对直接选择排序的有 效改进。堆排序的基本思想是:将一个无序数组构建 成一个大顶堆(或小顶堆),然后将堆顶元素(最大 值或最小值)与堆尾元素互换,之后将剩余元素重新 调整为大顶堆(或小顶堆),以此类推,直到整个数 组有序。堆排序的平均时间复杂度为O(nlogn),最坏 情况下时间复杂度也为O(nlogn),其空间复杂度为 O(1)。
详细描述
数据结构是计算机科学中一个重要的概念,它涉及到如何有效地组织和存储数据 ,以便能够高效地进行数据的检索、插入、删除和更新等操作。数据结构不仅决 定了数据在计算机中的表示方式,还影响了程序设计的效率。
数据结构的分类
总结词
数据结构可以根据不同的分类标准进行划分,如数据的逻辑结构和物理结构、静态和动态数据结构等 。
图论的应用
图论是研究图的结构和性质的一门学科,图论中的图是由节点和边组成的 数据结构。
图论在计算机科学中有着广泛的应用,例如社交网络分析、搜索引擎、路 由协议等。
在图论中,常见的算法包括最短路径算法、最小生成树算法、拓扑排序算 法等。
哈希表的应用
哈希表是一种基于哈希函数的数据结构,它能 够通过哈希函数将键映射到桶中,从而快速地 查找和插入数据。
详细描述
根据数据的逻辑结构和物理结构,数据结构可以分为线性结构和非线性结构。线性结构如数组、链表 、栈和队列等,非线性结构如树、图和集合等。此外,数据结构还可以根据是否在运行时动态分配内 存分为静态数据结构和动态数据结构。
数据结构的基本操作
总结词
数据结构的基本操作包括创建和销毁数据结构、插入和删除元素、查找和修改元素等。
数据结构(C语言版)课件
算法 = 控制结构 + 基本操作 算法的执行时间 =
∑基本操作(i)的执行次数×基本操作(i)的执行时间
算法的执行时间 与 基本操作执行次数之和 成正比
从算法中选取一种对于所研究的问题来说是 基本操作 的 原操作,以该基本操作 在算法中重复执行的次数 作为算法
运行时间的衡量准则。
时间复杂度的渐进表示法
假设一个学生档案管理系统应包含如下表所示的 学生信息
学 号 99070101 99070102 99070103 99070104
......
姓 名 李 军 王颜霞 孙 涛 单晓宏
......
学生基本情况 性 别 出生年月 男 80.12 女 81.2 男 80.9 男 81.3
...... ......
...... ...... ....... ...... ...... ......
特点:
l 每个学生的信息占据一行,所有学生 的信息按学号顺序依次排列构成一张表格; l 表中每个学生的信息依据学号的大小 存在着一种前后关系,这就是我们所说的线性 结构; l 对它的操作通常是插入某个学生的信 息,删除某个学生的信息,更新某个学生的信 息,按条件检索某个学生的信息等等。
// -----基本操作的实现
void add( complex z1, complex z2, complex &sum ) { // 以 sum 返回两个复数 z1, z2 的和 sum.realpart = z1.realpart + z2.realpart; sum.imagpart = z1.imagpart + z2.imagpart; }
D={e1,e2|e1,e2∈RealSet }
数据关系: R1={<e1,e2> | e1是复数的实数部分 | e2 是复数的虚数部分 }
∑基本操作(i)的执行次数×基本操作(i)的执行时间
算法的执行时间 与 基本操作执行次数之和 成正比
从算法中选取一种对于所研究的问题来说是 基本操作 的 原操作,以该基本操作 在算法中重复执行的次数 作为算法
运行时间的衡量准则。
时间复杂度的渐进表示法
假设一个学生档案管理系统应包含如下表所示的 学生信息
学 号 99070101 99070102 99070103 99070104
......
姓 名 李 军 王颜霞 孙 涛 单晓宏
......
学生基本情况 性 别 出生年月 男 80.12 女 81.2 男 80.9 男 81.3
...... ......
...... ...... ....... ...... ...... ......
特点:
l 每个学生的信息占据一行,所有学生 的信息按学号顺序依次排列构成一张表格; l 表中每个学生的信息依据学号的大小 存在着一种前后关系,这就是我们所说的线性 结构; l 对它的操作通常是插入某个学生的信 息,删除某个学生的信息,更新某个学生的信 息,按条件检索某个学生的信息等等。
// -----基本操作的实现
void add( complex z1, complex z2, complex &sum ) { // 以 sum 返回两个复数 z1, z2 的和 sum.realpart = z1.realpart + z2.realpart; sum.imagpart = z1.imagpart + z2.imagpart; }
D={e1,e2|e1,e2∈RealSet }
数据关系: R1={<e1,e2> | e1是复数的实数部分 | e2 是复数的虚数部分 }
数据结构(C)PPT1
帮助编写对应的程序 帮助区分一系列可以解决的小问题和难以解决的问题 决策制定成为更加理性的过程 使得过程一致和可靠
2020/10/8
数据结构的作用 可使用不同的算法来解决相同的问题。 一些算法可能比其它算法更有效地解决问题。 应使用提供最大效率的算法来解决问题。 改善算法效率的其中一个基本技巧是使用适当的数据结构。 数据结构被定义为在内存中互相组织各个数据元素的方式。
2020/10/8
确定算法的效率
影响程序效率的因素包括:
机器速度 编译器 操作系统 编程语言 输入大小
除了这些因素,程序的方式数据被组织且用于解决此问题的 算法还对程序的效率具有重大影响。
2020/10/8
确定算法的效率(续) 通过确定消耗的资源量,可以计算算法的效率。 算法消耗的主要资源是:
时间: 执行算法所需的CPU时间。 空间: 执行算法时所用的内存量。
静态,动态
2020/10/8
明确设计算法的技巧 设计算法时两个常用的技巧是:
分治法 贪婪法
2020/10/8
明确设计算法的技巧(续) 分治法是解决概念性困难问题的强大方法。 分治法需要你找出一个方法:
将问题细分为子问题 解决微不足道的用例 组合到子问题的解决方案以解决原始问题
2020/10/8
明确设计算法的技巧(续)
2020/10/8
数据结构的作用(续)
数据可以按许多不同的方式来组织。因此,您可以创建尽可 能多的数据结构。 经过多年已经证明很有用的一些数据结构是:
数组 链接表 堆栈 队列 树 图表
2020/10/8
数据结构的作用(续) 合适数据结构的使用有助于提高程序的效率。 使用合适的数据结构还允许您克服一些其它编程挑战,如:
2020/10/8
数据结构的作用 可使用不同的算法来解决相同的问题。 一些算法可能比其它算法更有效地解决问题。 应使用提供最大效率的算法来解决问题。 改善算法效率的其中一个基本技巧是使用适当的数据结构。 数据结构被定义为在内存中互相组织各个数据元素的方式。
2020/10/8
确定算法的效率
影响程序效率的因素包括:
机器速度 编译器 操作系统 编程语言 输入大小
除了这些因素,程序的方式数据被组织且用于解决此问题的 算法还对程序的效率具有重大影响。
2020/10/8
确定算法的效率(续) 通过确定消耗的资源量,可以计算算法的效率。 算法消耗的主要资源是:
时间: 执行算法所需的CPU时间。 空间: 执行算法时所用的内存量。
静态,动态
2020/10/8
明确设计算法的技巧 设计算法时两个常用的技巧是:
分治法 贪婪法
2020/10/8
明确设计算法的技巧(续) 分治法是解决概念性困难问题的强大方法。 分治法需要你找出一个方法:
将问题细分为子问题 解决微不足道的用例 组合到子问题的解决方案以解决原始问题
2020/10/8
明确设计算法的技巧(续)
2020/10/8
数据结构的作用(续)
数据可以按许多不同的方式来组织。因此,您可以创建尽可 能多的数据结构。 经过多年已经证明很有用的一些数据结构是:
数组 链接表 堆栈 队列 树 图表
2020/10/8
数据结构的作用(续) 合适数据结构的使用有助于提高程序的效率。 使用合适的数据结构还允许您克服一些其它编程挑战,如:
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
管理问题
图
AB BA BC
AC BD
AD B
C
D
DA EA EB
DB
DC
A
E
EC
ED
11
1.1 数据结构的概念
非数值计算问题:
例 田径赛的时间安排问题(无向图的着色问题) :
设有六个比赛项目,规定每个选手至多可参加三个项目,
有五人报名参加比赛(如下表所示)设计比赛日程表, 使得在尽可能短的时间内完成比赛。
Data Structure
数据结构(C语言版)
教 师:李伟生 电 话:62471342 Email:
课程安排
总学时:32 讲课学时:24 教材:《数据结构C语言版》严蔚敏、吴伟民
-----清华大学出版社
《数据结构题集》严蔚敏,清华大学出版社
2
参考书: 《数据结构》(用面向对象方法与C++描述),殷人 昆等,清华大学出版社 辅导 每周五下午:信息科技大厦1901
17
形成阶段: 60年代初期,“数据结构”有关的内容散见于操作 系统、编译原理和表处理语言等课程。1968年, “数据结构”被列入美国一些大学计算机科学系的 教学计划。 发展阶段: 数据结构的概念不断扩充,包括了网络、集合代数 论、关系等“离散数学结构”的内容。
1.1 数据结构的概念
《数据结构课程》
书目卡片 0 0 1 高 等 数 学 樊 映 川 0 0 2 理 论 力 学 罗 远 祥 登录号: 0 0 3 高 等 数 学 华 罗 庚 0 0 4 书名: 线 性 代 数 栾 汝 书 … … 作者名: … … … …
按书名
S 0 1 L 0 1 S 0 1 S 0 2 … …
索引表
分类号: 高 等 数 学 0 0 1 , 0 0 3 … … 樊映川 出版单位: 理 论 力 学 0 0 2 , … … . . 华罗庚 出版时间: 线 性 代 数 0 0 4 , … … 栾汝书 价格: … …… … . .
姓 名 项 目 1 项 目 2 丁 一 跳 高 跳 远 马 二 标 枪 铅 球 张 三 标 抢1 0 0 米 李 四 铅 球2 0 0 米 王 五 跳 远2 0 0 米 项 目 3 1 0 0 米 2 0 0 米 跳 高
12
1.1 数据结构的概念
非数值计算问题:
跳高 跳远 标枪 铅球 A B C D
20
1.2 基本概念和术语
数据对象(Data Object): 性质相同的数据元素的集合。是数据的一个子集。
整数数据对象
N = { 0, 1, 2, … }
字母字符数据对象 C={ ‘A’, ‘B’, ‘C’, … ‘F’ }
…….
按作者名
001,… 002,… . 004,… . …….
按分类号
L S …… 002,… 001,003, ……
8
树
–
例 井字棋
……..
……..
9
…...
…...
…...
…...
1.1 数据结构的概念
非数值计算问题:
例 电话号码查询问题:
(1)按顺序存储方式:须遍历表 (2)按姓氏索引方式:索引 要写出好的查找算法,取决于这张表的结构及存 储方式。 电话号码表的结构和存储方式决定了查找(算法) 的效率。
比赛时间
比赛项目
张三
李四 王五
C
D B
E
F F
F
A
1 2 3 4
A F
D C B E
A,C B,D E F
14
1.1 数据结构的概念
在应用程序中涉及到各种各样的数据,如何在计 算机中组织、存储、传递数据,需要讨论它们的 归类及它们之间的关系,从而建立相应的数据结 构,依此实现软件功能。 综上,描述这类非数值计算问题的数学模型不是 数学方程,而是树、表和图之类的数据结构。 因此从广义上讲,数据结构描述现实世界实体的 数学模型及其上的操作在计算机中的表示和实现.
15
1.1 数据结构的概念
求解非数值计算的问题:
主要考虑的是设计出合适的数据结构及相应的算法。 即:首先要考虑对相关的各种信息如何表示、组织和 存储? 因此,可以认为:数据结构是一门研究非数值计算 的程序设计问题中计算机的操作对象以及它们之间 的关系和操作的学科。
16
1.1 数据结构的概念
数据结构课程的形成和发展:
以上公式说明了如下两个问题: (1)数据上的算法决定如何构造和组织数据(算法→数据结构) (2)算法的选择依赖于作为基础的数据结构(数据结构→算法)。
软件=程序+文档(软件工程的观点)
5
1.1 数据结构的概念
电子计算机的主要用途:
早期:
主要用于数值计算。
后来:
处理逐渐扩大到非数值计算领域(能处理多种复杂的 具有一定结构关系的数据)。
课程重要性
编程基础 考研课程 计算机等级考试课程
程序员考试课程
3
第一章 绪论
1.1 数据结构的概念 1.2 基本概念和术语 1.3 抽象数据类型 1.4 算法和算法分析
4
1.1 数据结构的概念
为什么要学习数据结构? 什么是程序、软件?
N.沃思(Niklaus Wirth)教授提出: 程序=算法+数据结构
所处的地位:
18
1.2 基本概念和术语
数据(Data):
对信息的一种符号表示。在计算机科学中是指所有
能输入到计算机中并被计算机程序处理的符号的总 称。
数值型数据 非数值型数据
19
1.2 基本概念和术语
数据元素(Data Element): 数据的基本单位,在计算机程序中通常作为一个 整体进行考虑和处理。 一个数据元素可由若干个数据项组成。数据项 是数据的不可分割的最小标识单位。 姓 俱乐 出生日期 名 部名 年 月 日 称 入队 日期 职 业 位 绩
6
1.1 数据结构的概念
数值计算解决问题的一般步骤:
数学模型→选择计算机语言→编出程序→测试→最 终解答。 数值计算的关键是:如何得出数学模型(方程)? 程序设计人员比较关注程序设计的技巧。
非数值计算问题:
数据元素之间的相互关系一般无法用数学方程加以 描述
7
–
例 书目自动检索系统
线性表
书目文件
----田径赛的时间安排问题解法
(1)设用如下六个不同的代号代表不同的项目:
100米 200米 E F
(2)用顶点代表比赛项目
不能同时进行比赛的项目之间连上一条边。
(3)某选手比赛的项目必定有边相连(不能同时比赛)。
13
姓名 丁一 马二
项目1 A C
项目2 B D
项目3 E
只需 安排四 个单位 时间进 行比赛
图
AB BA BC
AC BD
AD B
C
D
DA EA EB
DB
DC
A
E
EC
ED
11
1.1 数据结构的概念
非数值计算问题:
例 田径赛的时间安排问题(无向图的着色问题) :
设有六个比赛项目,规定每个选手至多可参加三个项目,
有五人报名参加比赛(如下表所示)设计比赛日程表, 使得在尽可能短的时间内完成比赛。
Data Structure
数据结构(C语言版)
教 师:李伟生 电 话:62471342 Email:
课程安排
总学时:32 讲课学时:24 教材:《数据结构C语言版》严蔚敏、吴伟民
-----清华大学出版社
《数据结构题集》严蔚敏,清华大学出版社
2
参考书: 《数据结构》(用面向对象方法与C++描述),殷人 昆等,清华大学出版社 辅导 每周五下午:信息科技大厦1901
17
形成阶段: 60年代初期,“数据结构”有关的内容散见于操作 系统、编译原理和表处理语言等课程。1968年, “数据结构”被列入美国一些大学计算机科学系的 教学计划。 发展阶段: 数据结构的概念不断扩充,包括了网络、集合代数 论、关系等“离散数学结构”的内容。
1.1 数据结构的概念
《数据结构课程》
书目卡片 0 0 1 高 等 数 学 樊 映 川 0 0 2 理 论 力 学 罗 远 祥 登录号: 0 0 3 高 等 数 学 华 罗 庚 0 0 4 书名: 线 性 代 数 栾 汝 书 … … 作者名: … … … …
按书名
S 0 1 L 0 1 S 0 1 S 0 2 … …
索引表
分类号: 高 等 数 学 0 0 1 , 0 0 3 … … 樊映川 出版单位: 理 论 力 学 0 0 2 , … … . . 华罗庚 出版时间: 线 性 代 数 0 0 4 , … … 栾汝书 价格: … …… … . .
姓 名 项 目 1 项 目 2 丁 一 跳 高 跳 远 马 二 标 枪 铅 球 张 三 标 抢1 0 0 米 李 四 铅 球2 0 0 米 王 五 跳 远2 0 0 米 项 目 3 1 0 0 米 2 0 0 米 跳 高
12
1.1 数据结构的概念
非数值计算问题:
跳高 跳远 标枪 铅球 A B C D
20
1.2 基本概念和术语
数据对象(Data Object): 性质相同的数据元素的集合。是数据的一个子集。
整数数据对象
N = { 0, 1, 2, … }
字母字符数据对象 C={ ‘A’, ‘B’, ‘C’, … ‘F’ }
…….
按作者名
001,… 002,… . 004,… . …….
按分类号
L S …… 002,… 001,003, ……
8
树
–
例 井字棋
……..
……..
9
…...
…...
…...
…...
1.1 数据结构的概念
非数值计算问题:
例 电话号码查询问题:
(1)按顺序存储方式:须遍历表 (2)按姓氏索引方式:索引 要写出好的查找算法,取决于这张表的结构及存 储方式。 电话号码表的结构和存储方式决定了查找(算法) 的效率。
比赛时间
比赛项目
张三
李四 王五
C
D B
E
F F
F
A
1 2 3 4
A F
D C B E
A,C B,D E F
14
1.1 数据结构的概念
在应用程序中涉及到各种各样的数据,如何在计 算机中组织、存储、传递数据,需要讨论它们的 归类及它们之间的关系,从而建立相应的数据结 构,依此实现软件功能。 综上,描述这类非数值计算问题的数学模型不是 数学方程,而是树、表和图之类的数据结构。 因此从广义上讲,数据结构描述现实世界实体的 数学模型及其上的操作在计算机中的表示和实现.
15
1.1 数据结构的概念
求解非数值计算的问题:
主要考虑的是设计出合适的数据结构及相应的算法。 即:首先要考虑对相关的各种信息如何表示、组织和 存储? 因此,可以认为:数据结构是一门研究非数值计算 的程序设计问题中计算机的操作对象以及它们之间 的关系和操作的学科。
16
1.1 数据结构的概念
数据结构课程的形成和发展:
以上公式说明了如下两个问题: (1)数据上的算法决定如何构造和组织数据(算法→数据结构) (2)算法的选择依赖于作为基础的数据结构(数据结构→算法)。
软件=程序+文档(软件工程的观点)
5
1.1 数据结构的概念
电子计算机的主要用途:
早期:
主要用于数值计算。
后来:
处理逐渐扩大到非数值计算领域(能处理多种复杂的 具有一定结构关系的数据)。
课程重要性
编程基础 考研课程 计算机等级考试课程
程序员考试课程
3
第一章 绪论
1.1 数据结构的概念 1.2 基本概念和术语 1.3 抽象数据类型 1.4 算法和算法分析
4
1.1 数据结构的概念
为什么要学习数据结构? 什么是程序、软件?
N.沃思(Niklaus Wirth)教授提出: 程序=算法+数据结构
所处的地位:
18
1.2 基本概念和术语
数据(Data):
对信息的一种符号表示。在计算机科学中是指所有
能输入到计算机中并被计算机程序处理的符号的总 称。
数值型数据 非数值型数据
19
1.2 基本概念和术语
数据元素(Data Element): 数据的基本单位,在计算机程序中通常作为一个 整体进行考虑和处理。 一个数据元素可由若干个数据项组成。数据项 是数据的不可分割的最小标识单位。 姓 俱乐 出生日期 名 部名 年 月 日 称 入队 日期 职 业 位 绩
6
1.1 数据结构的概念
数值计算解决问题的一般步骤:
数学模型→选择计算机语言→编出程序→测试→最 终解答。 数值计算的关键是:如何得出数学模型(方程)? 程序设计人员比较关注程序设计的技巧。
非数值计算问题:
数据元素之间的相互关系一般无法用数学方程加以 描述
7
–
例 书目自动检索系统
线性表
书目文件
----田径赛的时间安排问题解法
(1)设用如下六个不同的代号代表不同的项目:
100米 200米 E F
(2)用顶点代表比赛项目
不能同时进行比赛的项目之间连上一条边。
(3)某选手比赛的项目必定有边相连(不能同时比赛)。
13
姓名 丁一 马二
项目1 A C
项目2 B D
项目3 E
只需 安排四 个单位 时间进 行比赛