简单数据结构.pptx
《简单数据结构.pptx》由会员分享,可在线阅读,更多相关《简单数据结构.pptx(92页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、线性表线性表是最简单也是最常用的一种数据结构。例如,C语言中的数组就是线性表应用的一个典型代表。第1页/共92页线性表的基本概念线性表是由n(n0)个类型相同的数据元素(结点)组成的有限序列。通常线性表的表示形式以及说明如图14.1所示。第2页/共92页线性表的基本概念第3页/共92页线性表的基本概念第4页/共92页线性表的基本操作线性表的基本操作通过以下函数可以实现,有关于这些函数的形式以及功能如表14-3。函数实现功能MakeEmpty(L)将线性表L变为空表Length(L)返回表L的长度,即表中元素个数Get(L,i)获得线性表L中位置i处的元素(1in)Prev(L,i)取i位置数据
2、元素的前趋元素Next(L,i)取i位置数据元素的后继元素Locate(L,x)函数的返回值为数据元素x在L中的位置Insert(L,I,x)在线性表L的位置i处插入元素x,将原占据位置i的元素及后面的元素都向后推一个位置Delete(L,p)从表L中删除位置p处的元素IsEmpty(L)如果表L为空表(长度为0)则返回true,否则返回falseClear(L)清除所有元素Init(L)同MakeEmpty(L),初始化线性表为空Traverse(L)遍历输出所有元素Find(L,x)查找线性表L中元素x首次出现的位置,如果成功返回出现的位置,否则返回0Update(L,x)更新元素Sort
3、(L)对所有元素重新按给定的条件排序rstr(string1,string2)用于字符数组的求string1中出现string2的首地址第5页/共92页线性表的基本操作第6页/共92页线性表的顺序存储结构线性表的顺序存储结构的含义如图14.5所示。第7页/共92页线性表的顺序存储结构第8页/共92页线性表的顺序存储结构第9页/共92页顺序表的基本操作顺序表的基本操作包括初始化、求顺序表的长度、判断顺序表是否为空、清空顺序表、获取顺序表中第i个元素。下面详细讲解这些基本操作。第10页/共92页1.初始化顺序表L在对顺序表操作之前我们必须先对顺序表初始化。对顺序表的初始化的算法如图14.8所示。第
4、11页/共92页2.求顺序表的长度求顺序表长度所用到的函数为Length(),该算法的实现如图14.9所示。第12页/共92页3.判断顺序表是否为空如果顺序表的长度为0,则顺序表为空表。判断顺序表是否为空的算法具体实现如图14.10所示。第13页/共92页4.清空顺序表清空顺序表也就是删除顺序表中的所有数据元素,清空之后的顺序表的长度length为0。清空顺序表的算法如图14.11所示。第14页/共92页5.获取顺序表中第i个元素取顺序表数据元素运算是返回顺序表中第i个数据元素,注意i取值范围是1ilength。如果i的取值正确,运算的时间复杂度为O(1)。取顺序表数据元素的算法实现如图14.
5、12所示。第15页/共92页顺序表的插入对顺序表初始化后,我们需要向顺序表中插入我们所需的数据,然后才能对其进行其它的操作。对顺序表的插入前与插入后数据元素的位置改变如图14.13所示。第16页/共92页顺序表的查找第17页/共92页1.按位置查找元素顺序表是一种随机存取结构。所以,在顺序表中按位置查找元素非常容易,只有查找位置合法,可直接返回对应的数据元素。按位置查找元素算法实现如图14.16所示。第18页/共92页2.按值查找元素按值查找元素是在顺序表中进行的,查找是否有结点值等于给定值x的结点,若有的话,则返回首次找到的其值为x的结点的存储位置;如果顺序表中没有与给定值匹配的数据元素,返
6、回一个特殊值表示查找失败。顺序表按值查找元素算法实现如图14.17所示。第19页/共92页3.顺序表的查找操作效率分析效率主要是从时间复杂度和空间复杂度来看的,由于现在计算机的内存足够用程序实现,所以我们这里只考虑时间复杂度。按位置查找数据元素的时间复杂度分析如图14.18所示。第20页/共92页3.顺序表的查找操作效率分析第21页/共92页顺序表的删除如果对顺序表的第i个元素删除操作,那么低i+1个元素以及其后面的元素都会向前移动一个位置,并且顺序表的长度减1,具体算法以及算法分析如图14.20所示。第22页/共92页顺序表的删除第23页/共92页顺序表操作的算法典型案例第24页/共92页线
7、性表的链式存储结构线性表的链式存储结构是指用一组任意的存储单元(可以连续,也可以不连续)存储线性表中的数据元素。在链式存储中,结点不仅包含数据元素的基本信息内容,而且包含数据元素之间的逻辑关系,如图14.24所示。第25页/共92页线性表的链式存储结构第26页/共92页线性表的链式存储结构第27页/共92页单链表的基本操作第28页/共92页1初始化链表L初始化链表主要完成头结点空间的申请和赋值。在以后的算法中不加说明则默认为单链表是带头结点的。初始化链表实现算法如图14.27所示。第29页/共92页2清空链表L 清空操作是指清除单链表中的所有结点使单链表为空,并释放空间。此时,头指针变为空。清
8、空链表实现算法如图14.28所示。第30页/共92页3判链表L是否为空如果单链表的头指针所指的第一个结点为空,那么单链表就为空,返回1,否则返回0。判断单链表是否为空的算法实现如图14.29所示。第31页/共92页4带头结点的单链表求表长算法思路:设一个移动指针和计数器k。若所指结点后面还有结点,向后移动,计数器加1。直至循环结束返回k的值就是链表长度。带头结点的单链表求表长算法实现如图14.30。第32页/共92页5不带头结点的单链表不带头结点的单链表求表长与带头结点的算法思路基本一致。但控制流程的条件有所不同。不带头结点的单链表求表长算法实现如图14.31所示。第33页/共92页5不带头结
9、点的单链表第34页/共92页14.1.11 单链表的插入结点运算第35页/共92页1单链表 单链表的插入运算是将值为x的新结点插入到单链表的第i个结点的位置上。先在单链表中找到第i-1个结点,再在其后插入新结点。单链表插入结点的过程如图14.32所示。第36页/共92页1单链表第37页/共92页单链表的删除结点运算删除运算是将单链表的第i个结点删去。先在单链表中找到第i-1个结点,再删除其后的结点。删除单链表结点的过程如图14.35所示。第38页/共92页单链表的删除结点运算第39页/共92页单链表的查找结点运算单链表查找分为按序号查找和按值查找两种。按值查找是指在表中查找其值满足给定值的结点
10、。返回在单链表中首次出现与给定值相等的数据元素的序号;否则,返回一个特殊值表示查找失败。按序号查找比较简单,实际上就是与序号对应相同的元素的值。第40页/共92页1.按序号查找按序号查找是从链表的第一个元素结点起,判断当前结点序号是否是第i个。若是,则返回该结点的指针,否则继续向下移动,直到走完整个链表为止。没有第个结点时返回空。单链表按序号查找实现算法如图14.37所示。第41页/共92页1.按序号查找第42页/共92页2.按值查找从链表的第一个元素结点起,判断当前结点其值是否等于待定值,若是,返回该结点的指针,否则继续向下移动,直到走完整个链表为止。找不到时返回空。按值查找实现算法如图14
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 数据结构
限制150内