《数据结构》课程PPT教学课件(讲稿)第一章 数据结构基础

第一章数据结构基础 要想成为一名真正的程序员,数据结构是必备的基础知识。 只有学过数据结构,才能真正有效规范地组织程序中的数据。而 在实际编程中,有些问题必须通过特定的数据结构才能更方便地 解决。因此数据结构是每一个搞计算机的人都应当十分掌握的知 识。 要想全面而系统地学习数据结构的知识,这里的介绍显然是 不充分的,建议应当找来专门介绍数据结构的书籍学习。如果你 只想掌握一般层次的知识,或是已经学过数据结构,只是为了深 入地学习本书后续的内容而进行回顾和复习,那么本章的介绍是 足够的
第一章 数据结构基础 要想成为一名真正的程序员,数据结构是必备的基础知识。 只有学过数据结构,才能真正有效规范地组织程序中的数据。而 在实际编程中,有些问题必须通过特定的数据结构才能更方便地 解决。因此数据结构是每一个搞计算机的人都应当十分掌握的知 识。 要想全面而系统地学习数据结构的知识,这里的介绍显然是 不充分的,建议应当找来专门介绍数据结构的书籍学习。如果你 只想掌握一般层次的知识,或是已经学过数据结构,只是为了深 入地学习本书后续的内容而进行回顾和复习,那么本章的介绍是 足够的

11什么是数据结构 数据结构就是指计算机内部数据的组织形式和存储方法。 我们再熟悉不过的数组就是一种简单而典型的线性数据结构类型 。本章中将更加具体地介绍一些常用的数据结构,主要包括:线 性结构、树、图。 线性结构是最常用,也是最简单的一种数据结构。还有 种常用的数据结构叫做图状结构,简称图结构。图结构中数据元 素之间存在着“多对多”的关系,因此图结构较树结构,线性结 构要复杂得多。在处理一些复杂的问题中,图结构往往能派上用 场
1.1 什么是数据结构 数据结构就是指计算机内部数据的组织形式和存储方法。 我们再熟悉不过的数组就是一种简单而典型的线性数据结构类型 。本章中将更加具体地介绍一些常用的数据结构,主要包括:线 性结构、树、图。 线性结构是最常用,也是最简单的一种数据结构。还有一 种常用的数据结构叫做图状结构,简称图结构。图结构中数据元 素之间存在着“多对多”的关系,因此图结构较树结构,线性结 构要复杂得多。在处理一些复杂的问题中,图结构往往能派上用 场

12顺序表 在计算机内部存储一张线性表(线性结构的数表), 最为方便简单的就是用一组连续地址的内存单元来存储整张 线性表。这种存储结构称为顺序存储结构,这种存储结构下 的线性表就叫做顺序表。如图1-1所示,就是顺序表的示意 000H 0001H+ 内存空间地址连 有唯一的4 续,数据顺序存储← 名称标识4 图1-1顺序表的示意4
1.2 顺序表 在计算机内部存储一张线性表(线性结构的数表), 最为方便简单的就是用一组连续地址的内存单元来存储整张 线性表。这种存储结构称为顺序存储结构,这种存储结构下 的线性表就叫做顺序表。如图1-1所示,就是顺序表的示意

121顺序表的定义 定义一张顺序表也就是在内存中开辟一段连续的存储 空间,并给它一个名字来标识。只有定义了一个顺序表, 才能利用该顺序表存放数据元素,也才能对该顺序表进行 各种操作。 有两种定义顺序表的方法,一是静态地定义一张顺序 表;二是动态生成一张顺序表
1.2.1 顺序表的定义 定义一张顺序表也就是在内存中开辟一段连续的存储 空间,并给它一个名字来标识。只有定义了一个顺序表, 才能利用该顺序表存放数据元素,也才能对该顺序表进行 各种操作。 有两种定义顺序表的方法,一是静态地定义一张顺序 表;二是动态生成一张顺序表

122向顺序表中插入元素 下面介绍如何在长度为n的顺序表中的第个位置插入新元素 item。 所谓在长度为n的顺序表中的第价个位置插入新元素是指在顺序 表第1个数据元素和第个数据元素之间插入一个新元素item 函数 nserelem的作用是在顺序表 Sqlist中第个位置上插入元 素item,并将顺序表长度加1。其实现过程如下。 (1)判断插入元素的位置是否合法。一个长度为n的顺序表的 可能插入元素的位置是1~n+1,因此如果1或者n+1或者表满 n== Maxsize(因为表的内存大小固定不变)的插入都是非法的。 (2)将顺序表的1以后的元素顺序后移一个元素的位置,即 将顺序表从第个元素到第n个元素顺序后移一个元素的位置。 (3)在表的第个位置(下标为1)上插入元素item,并将表 长加
1.2.2 向顺序表中插入元素 下面介绍如何在长度为n的顺序表中的第i个位置插入新元素 item。 所谓在长度为n的顺序表中的第i个位置插入新元素是指在顺序 表第i-1个数据元素和第i个数据元素之间插入一个新元素item。 函数InserElem的作用是在顺序表Sqlist中第i个位置上插入元 素item,并将顺序表长度加1。其实现过程如下。 (1)判断插入元素的位置是否合法。一个长度为n的顺序表的 可能插入元素的位置是1~n+1,因此如果in+1或者表满 n==MaxSize(因为表的内存大小固定不变)的插入都是非法的。 (2)将顺序表的i-1以后的元素顺序后移一个元素的位置,即 :将顺序表从第i个元素到第n个元素顺序后移一个元素的位置。 (3)在表的第i个位置(下标为i-1)上插入元素item,并将表 长加1

123从顺序表中删除元素 下面介绍如何删除长度为n的顺序表中的第个位置的元 素 所谓删除长度为n的顺序表中的第个位置的元素,就是 指将顺序表第个位置上的元素去掉。 函数 Delelem的作用是从顺序表 Sqlist中删除第个位置 的元素,并将表的长度值减1。其实现过程如下 (1)判断要删除的元素是否合法。对于一个长度为n的 顺序表,删除元素的合法位置是1~n,因此如果in都 是不合法的。 (2)将顺序表的第位置以后的元素依次前移,这样就 将第i个元素覆盖掉了,也就起到删除第个位置元素的作用。 (3)最后将表长减1
1.2.3 从顺序表中删除元素 下面介绍如何删除长度为n的顺序表中的第i个位置的元 素。 所谓删除长度为n的顺序表中的第i个位置的元素,就是 指将顺序表第i个位置上的元素去掉。 函数DelElem的作用是从顺序表Sqlist中删除第i个位置 的元素,并将表的长度值减1。其实现过程如下。 (1)判断要删除的元素是否合法。对于一个长度为n的 顺序表,删除元素的合法位置是1~n,因此如果in都 是不合法的。 (2)将顺序表的第i位置以后的元素依次前移,这样就 将第i个元素覆盖掉了,也就起到删除第i个位置元素的作用。 (3)最后将表长减1

124实例与分析 前面介绍了静态顺序表和动态顺序表的定义,创建, 插入元素,删除元素等方法。下面通过具体的实例巩固学到 的知识。 【实例1-1】创建一个静态的顺序表存放整数,大小为 10,完成以下的操作: (1)输入6个整数,打印出顺序表中的内容,并显示 表中剩余的空间个数。 (2)在顺序表中的第3个位置插入元素0,打印出顺序 表中的内容,并显示表中剩余的空间个数。 (3)再试图插入表中第11个位置整数0,程序提示超 出范围 (4)删除表中第6个元素,打印出顺序表中的内容, 并显示表中剩余的空间个数
1.2.4 实例与分析 前面介绍了静态顺序表和动态顺序表的定义,创建, 插入元素,删除元素等方法。下面通过具体的实例巩固学到 的知识。 【实例1-1】创建一个静态的顺序表存放整数,大小为 10,完成以下的操作: (1)输入6个整数,打印出顺序表中的内容,并显示 表中剩余的空间个数。 (2)在顺序表中的第3个位置插入元素0,打印出顺序 表中的内容,并显示表中剩余的空间个数。 (3)再试图插入表中第11个位置整数0,程序提示超 出范围 (4)删除表中第6个元素,打印出顺序表中的内容, 并显示表中剩余的空间个数

13链表 与顺序表相同,链表也是一种线性表,它的数据的逻 辑组织形式是一维的。而与顺序表不同的是,链表的物理存 储结构是用一组地址任意的存储单元存储数据的。也就是说 它不像顺序表那样占据一段连续的内存空间,而是将存储 单元分散在内存的任意地址上。在链表结构中,存储的每个 数据元素记录都存放到幢淼囊桓鼋岬悖node)中,而每个 结点之间由指针将其连接在一起,这样就形成了一条如同“ 链”的结构。 head 1249 1356 1021 1249 B C D 1356 1475 1021 Null
1.3 链表 与顺序表相同,链表也是一种线性表,它的数据的逻 辑组织形式是一维的。而与顺序表不同的是,链表的物理存 储结构是用一组地址任意的存储单元存储数据的。也就是说 ,它不像顺序表那样占据一段连续的内存空间,而是将存储 单元分散在内存的任意地址上。在链表结构中,存储的每个 数据元素记录都存放到幢淼囊桓鼋岬悖node)中,而每个 结点之间由指针将其连接在一起,这样就形成了一条如同“ 链”的结构

13.1创建一个链表 建立一条长度为n的链表的全过程,共分为以下几个步骤。 (1)用 malloc函数在内存的动态存储区中开辟一块大小为 sizeof(( LNode)的空间,并将其地址赋值给 Linklist类型变量p,然 后将数据e存入该结点的数据域data,指针域存放NULL。其中数 据e由函数Get获得。 (2)如果指针变量list为空,说明本次生成的结点为第一个 结点,所以将p赋值给ist,ist是 Linklist类型变量,只用来指向 第一个链表结点,因此它是该链表的头指针,最后要返回。 (3)如果指针变量list不为空,则说明本次生成的结点不是 第一个结点,因此将p赋值给r→neto (4)再将p赋值给r,目的是使r再次指向最后的结点,以便 生成链表的下一个结点,即:保证r永远指向原先链表的最后一个 结点。 (5)最后将生成的链表的头指针ist返回主调函数,通过 ist就可以访问到该链表的每一个结点,并对该链表进行操作
1.3.1 创建一个链表 建立一条长度为n的链表的全过程,共分为以下几个步骤。 (1)用malloc函数在内存的动态存储区中开辟一块大小为 sizeof(LNode)的空间,并将其地址赋值给LinkList类型变量p,然 后将数据e存入该结点的数据域data,指针域存放NULL。其中数 据e由函数Get获得。 (2)如果指针变量list为空,说明本次生成的结点为第一个 结点,所以将p赋值给list,list是LinkList类型变量,只用来指向 第一个链表结点,因此它是该链表的头指针,最后要返回。 (3)如果指针变量list不为空,则说明本次生成的结点不是 第一个结点,因此将p赋值给r->next。 (4)再将p赋值给r,目的是使r再次指向最后的结点,以便 生成链表的下一个结点,即:保证r永远指向原先链表的最后一个 结点。 (5)最后将生成的链表的头指针list返回主调函数,通过 list就可以访问到该链表的每一个结点,并对该链表进行操作

132向链表中插入结点 下面介绍如何在指针q指向的结点后面插入结点。该过 程的步骤如下: (1)先创建一个新结点,并用指针p指向该结点。 (2)将q指向的结点的next域的值(即q的后继结点的 指针)赋值给p指向结点的next域。 (3)将p的值赋值给q的next域
1.3.2 向链表中插入结点 下面介绍如何在指针q指向的结点后面插入结点。该过 程的步骤如下: (1)先创建一个新结点,并用指针p指向该结点。 (2)将q指向的结点的next域的值(即q的后继结点的 指针)赋值给p指向结点的next域。 (3)将p的值赋值给q的next域
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 华北科技学院:图像的采集与处理(PPT课件讲稿)Photoshop CS.ppt
- 《JAVA与面向对象编程》课程教学资源(PPT课件讲稿)第二章 Java语法基础.ppt
- 《C语言程序设计》课程电子教案(PPT教学课件)第四章 选择结构程序设计.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第7章 模拟量输入输出接口.ppt
- Wrapper Generation and HTML Reduction(PPT讲稿).ppt
- 《微机原理》课程教学资源(PPT课件讲稿)第九章 可编程接口芯片及其与CPU的接口.ppt
- 面向服务的业务流程管理(PPT讲稿)Business Process Modeling Notation(BPMN), Business Process Executive Language(BPEL), and XML Process Definition Language(XPDL).pptx
- 上海交通大学:《微机原理与接口技术》课程教学资源(教学大纲)信息与计算科学专业.pdf
- 《计算机组装与维护》课程教学资源(PPT课件讲稿)第七章 计算机硬件故障处理.ppt
- 《Photoshop_CS入门教程》教学资源(PPT讲稿)第1章 浏览Photoshop CS.ppt
- 山东大学:《微机原理及单片机接口技术》课程教学资源(PPT课件讲稿)第七章 定时计数器与可编程计数器阵列.ppt
- 《计算机网络》课程教学资源(PPT课件讲稿)第三章 数据链路层.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第一章 绪论.ppt
- 《PHP程序设计》课程教学资源(教学大纲).doc
- 软件测试(PPT课件讲稿)黑盒测试.pptx
- 河南中医药大学(河南中医学院):《计算机网络》课程教学资源(PPT课件讲稿)第一章 计算机网络概述(2015版).ppt
- 西安交通大学:《程序设计语言》课程电子教案(PPT教学课件)第二章 Fortran程序设计基础.ppt
- 西安电子科技大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第七章 常用接口芯片技术.pptx
- 香港科技大学:Cross-Selling with Collaborative Filtering(PPT讲稿).ppt
- 中国科学技术大学:《密码学导论》课程教学资源(PPT课件讲稿)第4章 数论基础(主讲:李卫海).pptx
- 《计算机维修》课程教学资源(PPT课件讲稿)第3章 磁盘工具.ppt
- 《物联网导论》课程教学资源(PPT课件讲稿)第2章 自动识别技术与RFID.ppt
- Introduction to Computing Using Java(PPT讲稿)Java Language Basics.ppt
- 《编译原理》课程教学资源(PPT课件讲稿)从正则表达式到有限自动机.pptx
- 沈阳工程学院:《面向对象程序设计》课程教学大纲(适用专业:计算机科学与技术专业).pdf
- 《计算机辅助设计》课程介绍.pdf
- 《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第二讲 关系数据库.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)模式&框架 Pattern & Framework.ppt
- 《C语言程序设计》课程电子教案(PPT课件讲稿)第二章 基本数据类型及运算.ppt
- Performance Evaluation of Long Range Dependent Queues(PPT讲稿).pptx
- 上海海事大学:《数字图像处理》课程教学资源(PPT课件讲稿)Unit 7 Introduction to Digital Image Processing.ppt
- 《网络搜索和挖掘关键技术 Web Search and Mining》课程教学资源(PPT讲稿)Lecture 08 Scoring and results assembly.ppt
- 《数据库基础》课程教学资源(PPT课件讲稿)第四章 数据查询.ppt
- 北京大学:C++模板与STL库介绍(PPT讲稿).ppt
- Computer Graphics(PPT讲稿)INFORMATION VISUALIZATION.pptx
- 档案数字化基本程序与要求(PPT讲稿).ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第5章 指令级并行.pptx
- 上海交通大学:《程序设计》课程教学资源(PPT课件讲稿)第14章 输入输出与文件.ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第7章 多处理器及线程级并行.ppt
- 南京大学:《编译原理》课程教学资源(PPT课件讲稿)第五章 语法制导的翻译.ppt