第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.

Slides:



Advertisements
Similar presentations
While 迴圈 - 不知重複執行次數
Advertisements

CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
主讲:王幸民 理学院计算机基础教学部.
1.1 程序和程序设计 程 序:简单的说程序就是指令的集合。 计算机设计语言: 机器语言 :二进制 0 、 1 汇编语言:助记符(英语单词)。 高级语言: 人类自然语言(数学语言 + 英语) 如: C 语言、 Qbasic 、 VB 等 第一章:程序设计基本概念.
C语言程序设计 主讲教师 :张群燕 电话:
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
C#程序设计案例教程 第3章 程 序 结 构.
第一章 C语言概述 计算机公共教学部.
AI人工智慧報告 黑白棋 班級:資工四乙 學號:498G0009 姓名:盧冠妤.
技术试验及其方法 制作者 : 贾琼瑞
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
第 5 章 流程控制 (一): 條件分支.
把握命题趋势 ★ 科学应考 实现最后阶段的有效增分
第十二章 生产与费用循环审计.
用字母表示数 A=X+Y+Z 执教:建阳市西门小学 雷正明.
選擇 運算式 邏輯運算 if指令 流程圖基本觀念 程式註解 巢狀if指令 switch指令.
第三章 控制结构.
C语言程序设计 第五章 选择结构程序设计.
Class 2 流程控制-選擇敘述與迴圈.
佇列 (Queue).
C++Primer 3rd edition 中文版 Chap 5
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
第3章 C 語言的基本知識.
If … else 選擇結構 P27.
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
30 利用畢氏定理,計算下列各直角三角形中, 未知邊長 x 的值: (1) x2+( )2=( )2 x= 因為 x>0, 所以 x=3。
PHP 程式流程控制結構.
Introduction to the C Programming Language
第 3 讲 线性表(一).
第三章 栈与队列 £3.1 栈 £3.3 队列 £3.2 栈的应用举例 £3.1.1 栈的定义 £3.1.2 栈的顺序存储结构
第3章 栈和队列(一).
第三章 栈和队列.
数据结构 Data Structure 中南大学 主讲人:王国军,郑瑾 中南大学信息院计科系
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
計數式重複敘述 for 迴圈 P
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
網路遊戲版 幸福農場168號.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第二章Java基本程序设计.
C语言概述 第一章.
程式結構&語法.
第1章 初识3DS MAX 的神奇功能 本章应知 了解3DS MAX 6的工作界面、菜单栏、主工具栏、辅助工具栏、命令面板、工作区、动画播放区、视图工具的基本功能。 本章应会 1. 使用文件菜单能打开、新建、重做、保存3DS MAX文件 2. 会使用命令面板命令在视图中建立三维立体模型.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
第一章 程序设计和C语言 主讲人:高晓娟 计算机学院.
C程序设计.
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
第一章 C语言概述 教师:周芸.
第2章 认识C语言 教学要点 2. 1 项目二C语言程序识读 2 .2 项目三班级成绩排名 2 .3 知识链接 返回.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第三章 程序的控制结构 第一节 概述 第二节 if选择结构 第三节 switch语句.
第二章 Java语法基础.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
#include <iostream.h>
第四章 函数 丘志杰 电子科技大学 计算机学院 软件学院.
第二章 Java基本语法 讲师:复凡.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
第2章 Java语言基础.
第6章 PHP基本語法介紹.
多重條件選擇敘述
4.1 概 述 4.2 组合体视图绘制方法 4.3 组合体的尺寸标注 4.4 组合体视图的读图方法
C#快速導讀 流程控制.
C语言基本语句 判断循环.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
C程序设计 复习 1、计算机系统的组成 外部设备:输入、输出设备(同人打交道《十进制》)
大綱: 比例線段定義 平行線截比例線段性質 顧震宇 台灣數位學習科技股份有限公司
Presentation transcript:

第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准

1.1 数据结构研究的主要内容 1.2 基本概念和术语 1.3 算法

1.1 数据结构研究的主要内容 当今计算机应用的特点: l 所处理的数据量大且具有一定的关系; l 对其操作不再是单纯的数值计算,而更多 1.1 数据结构研究的主要内容 当今计算机应用的特点: l 所处理的数据量大且具有一定的关系; l 对其操作不再是单纯的数值计算,而更多 的是需要对其进行组织、管理和检索。 应用举例1——学籍档案管理 假设一个学籍档案管理系统应包含如下表1-1所示的学生信息。

表1-1

特点: l 每个学生的信息占据一行,所有学生的信息按 学号顺序依次排列构成一张表格; l 表中每个学生的信息依据学号的大小存在着一种前后关系,这就是我们所说的线性结构; l 对它的操作通常是插入某个学生的信息,删除某个学生的信息,更新某个学生的信息,按条件检索某个学生的信息等等。 应用举例2——输出n个对象的全排列 输出n个对象的全排列可以使用下图1-1所示的形式描述。

图 1-1 3个对象的全排列过程

特点: l 在求解过程中,所处理的数据之间具有层次关系,这是我们所说的树形结构; l 对它的操作有:建立树形结构,输出最低层结点内容等等。 应用举例3——制定教学计划 在制定教学计划时,需要考虑各门课程的开设顺序。有些课程需要先导课程,有些课程则不需要,而有些课程又是其他课程的先导课程。比如,计算机专业课程的开设情况如下表1-2所示:

表1-2

课程先后关系的图形描形式: c1 c9 c4 c2 c12 c10 c11 c5 c3 c6 c7 c8 图 1-2 计算机专业必修课程开设先后关系

特点 l 课程之间的先后关系用图结构描述; l 通过实施创建图结构,按要求将图结构中的顶点进行线性排序。 结论 计算机的操作对象的关系更加复杂,操作形式不再是单纯的数值计算,而更多地是对这些具有一定关系的数据进行组织管理,我们将此称为非数值性处理。要使计算机能够更有效地进行这些非数值性处理,就必须弄清楚这些操作对象的特点,在计算机中的表示方式以及各个操作的具体实现手段。这些就是《数据结构》这门课程研究的主要内容。

1.2 基本概念和术语 数据 是对客观事物的符号表示。在计算机科学中其含义是指所有能够输入到计算机中并被计算机程序处理的符号集合。 数据元素 1.2 基本概念和术语 数据 是对客观事物的符号表示。在计算机科学中其含义是指所有能够输入到计算机中并被计算机程序处理的符号集合。 数据元素 是数据集合中的一个实体,是计算机程序中加工处理的基本单位。

数据元素按其组成可分为简单型数据元素和复杂型数据元素。简单型数据元素由一个数据项组成,所谓数据项就是数据中不可再分割的最小单位;复杂型数据元素由多个数据项组成,它通常携带着一个概念的多方面信息。 数据结构 简单地说,就是相互之间存在一种或多种特定关系的数据元素的集合。常见的数据结构有:线性结构、树形结构和图形结构。 逻辑结构 数据结构中所说的“关系”实际上是指数据元素之间的逻辑关系,又称此为逻辑结构。

存储结构(物理结构) 是指数据结构在计算机存储器中的具体实现。与孤立的数据元素表示形式不同,数据结构中的数据元素不但要表示其本身的实际内容,还要表示清楚数据元素之间的逻辑结构。 常见的存储结构 顺序存储结构:特点是借助于数据元素的相对存储位置来表示数据元素之间的逻辑结构; 链式存储结构:特点是借助于指示数据元素地址的指针表示数据元素之间的逻辑结构。

1.3 算法 1.3.1 算法的概念 算法是解决某个特定问题的一种方法或一个过程。 1.3 算法 1.3.1 算法的概念 算法是解决某个特定问题的一种方法或一个过程。 计算机对数据的操作可以分为数值性和非数值性两种类型。在数值性操作中主要进行的是算术运算;而在非数值性操作中主要进行的是检索、排序、插入、删除等等。

设计算法的基本过程 l 通过对问题进行详细地分析,抽象出相应的数学模型; l 确定使用的数据结构,并在此基础上设计对此数据结构实施各种操作的算法; l 选用某种语言将算法转换成程序; l 调试并运行这些程序。

算法应该具有下列五个特性 (1)有穷性:一个算法必须在执行有穷步之后结束。 (2)确定性:算法中的每一步,必须有确切的含义,在他人理解时不会产生二义性。 (3)可行性:算法中描述的每一步操作都可以通过已有的基本操作执行有限次实现。 (4)输入:一个算法应该有零个或多个输入。 (5)输出:一个算法应该有一个或多个输出。这里所说的输出是指与输入有某种特定关系的量。

举例 问题:按从小到大的顺序重新排列x,y,z三个数值的内容。 算法: (1)输入x,y,z三个数值; (2)从三个数值中挑选出最小者并换到x中; (3)从y,z中挑选出较小者并换到y中; (4)输出排序后的结果。

1.3.2 算法的描述 选择算法描述语言的准则 (1)该语言应该具有描述数据结构和算法的基本功能; 1.3.2 算法的描述 选择算法描述语言的准则 (1)该语言应该具有描述数据结构和算法的基本功能; (2)该语言应该尽可能地简捷,以便于掌握、理解; (3)使用该语言描述的算法应该能够比较容易地转换成任何一种程序设计语言。 “类C”描述语言是通过对C语言进行精心筛选保留的一个核心子集,并为了便于描述,又做了若干扩展修改,从而,增强了语言的描述功能。

1. 预定义常量及类型 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -1 数据元素被约定为EntryType 类型,用户需要根据具体情况,自行定义该数据类型。

2. 算法描述为以下的函数形式: 函数类型 函数名(函数参数表) { 语句序列; } 为了简化函数的书写,提高算法描述的清晰度,我们规定除函数参数表中的参数需要说明数据类型外,函数中使用的局部变量可以不做变量说明,必要时给出相应的注释即可。另外,在书写算法时,应该养成对重点语句段落添加注解的良好习惯。

3. 在算法描述中可以使用的赋值语句形式有: 简单赋值 变量名 = 表达式; 串联赋值 变量名1 = 变量名2 = ... = 变量名n = 表达式; 成组赋值 (变量名1,...,变量名n)=(表达式1,...,表达式n); 结构赋值 结构名1 = 结构名2; 结构名 =(值1,值2,...,值n); 条件赋值 变量名 = 条件表达式 ? 表达式1:表达式2; 交换赋值 变量名1  变量名2;

4. 在算法描述中可以使用的选择结构语句形式有: 条件语句1 if (表达式) 语句; 条件语句2 if (表达式) 语句; else 语句; 开关语句1 switch (表达式) { case 值1:语句序列1;break; case 值2:语句序列2;break; ... case 值n:语句序列n;break; default:语句序列n+1; }

开关语句2 switch { case 条件1:语句序列1;break; case 条件2:语句序列2;break; ... case 条件n:语句序列n;break; default:语句序列n+1; }

5. 在算法描述中可以使用的循环结构语句形式有: for循环语句 for (表达式1;循环条件表达式;表达式2) 语句; while循环语句 while (循环条件表达式) 语句; do-while循环语句 do { 语句序列; } while (循环条件表达式); 6. 在描述算法中可以使用的结束语句形式有: 函数结束语句 return 表达式; return; case或循环结束语句 break; 异常结束语句 exit(异常代码);

7. 在算法描述中可以使用的输入输出语句形式有: 输入语句 scanf( [格式串],变量名1,...,变量名n); 输出语句 printf( [格式串],表达式1,...,表达式n); 方括号([ ])中的内容是可以省略的部分。 8. 在算法描述中使用的注释格式为: 单行注释 //文字序列 9. 在算法描述中可以使用的扩展函数有: 求最大值 max(表达式1,...,表达式n);这个函数返回参数表中n个表达式计算结果中的最大值。 求最小值 min(表达式1,...,表达式n);这个函数返回参数表中n个表达式计算结果中的最小值。

【算法1-1】用类C描述将三个数值排序的算法。 viod Three_Sort( int *x,int *y,int *z) { //将x,y,z三个指针所指示的内容按从小到大的顺序重新排列 if (*y<*x&&*y<*z) *x*y; //挑选出最小的数值并换到 x指针所指的存储单元中 else if (*z<*x&&*z<*y) *x*z; if (*z<*y) *y*z; //在y和z所指示的存储单元中挑选出较小者换到y中 }

1.3.3 算法的评价 算法的评价标准 (1) 正确性:要求算法能够正确地执行预先规定的功能,并达到所期望的性能要求。 1.3.3 算法的评价 算法的评价标准 (1) 正确性:要求算法能够正确地执行预先规定的功能,并达到所期望的性能要求。 (2) 可读性:为了便于理解、测试和修改算法,算法应该具有良好的可读性。 (3) 健壮性:算法中拥有对输入数据、打开文件、读取文件记录、分配内存空间等操作的结果检测,并通过与用户对话的形式做出相应的处理选择。 (4) 时间与空间效率:算法的时间与空间效率是指将算法变换为程序后,该程序在计算机上运行时所花费的时间及所占据空间的度量。

算法的时间效率 算法的时间效率主要由两个因素决定: l 所需处理问题的数据量大小,数据量大,所花费的时间就多; l 在解决问题的过程中,基本操作的执行次数。 时间特性的分析 如果我们将一个算法所花费的时间设计成一个以数据量n为自变量的函数T(n),这个函数在正整数定义域范围内一定是单调递增的。好的算法应该能够在数据量n增长的同时,函数T(n)的增长速度比较缓慢。

空间效率的分析 一个算法的空间效率是指在算法的执行过程中,所占据的辅助空间数量。辅助空间就是除算法代码本身和输入输出数据所占据的空间外,算法临时开辟的存储空间单元。在有些算法中,占据辅助空间的数量与所处理的数据量有关,而有些却无关。后一种是较理想的情况。在设计算法时,应该注意空间效率。