数据结构线性表A.ppt
《数据结构线性表A.ppt》由会员分享,可在线阅读,更多相关《数据结构线性表A.ppt(54页珍藏版)》请在课桌文档上搜索。
1、Recap:数据结构的定位,第二章:线性表,1,介于数学、计算机硬件和计算机软件三者之间的一门核心课程大数据时代的核心问题,Recap:什么是数据结构?,第二章:线性表,2,问题分类:数值问题、非数值问题 数 值 问 题数学方程 非数值问题数据结构,Recap:什么是数据结构?,第二章:线性表,3,Data_Structure=(D,S),元素有限集,关系有限集,相互之间存在一种或多种特定关系的数据元素的集合,表示为:,程序设计好算法好结构,Recap:基本概念,第二章:线性表,4,数据(data):所有能输入到计算机中并能被计算机程序识别和处理的符号集合。数据元素(data element)
2、:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。数据项(data item):构成数据元素的不可分割的最小单位。,三者之间的关系:数据 数据元素 数据项,Recap:数据结构主要内容,第二章:线性表,5,Recap:逻辑结构,第二章:线性表,6,集合结构:仅同属一个集合线性结构:一对一(1:1)树结构:一对多(1:n)图结构:多对多(m:n),非线性,线 性,指数据元素之间的逻辑关系。即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。,Recap:存储结构,第二章:线性表,7,数据元素之间的关系在计算机中通常有以二种不同的表示方法,对应二种不同的存储结构顺序映象 顺
3、序存储结构非顺序映象 链式存储结构,复数3.02.3i 的两种存储方式:,地址 内容,地址 内容,2字节,顺序存储方式,链式存储方式,2字节,Recap:抽象数据类型的定义,第二章:线性表,8,ADT=(D,S,P)数据对象 D上的关系集 D上的操作集,ADT抽象数据类型名 数据对象:数据关系:基本操作:ADT抽象数据类型名,第二章:线性表,9,Recap:抽象数据类型定义,例:定义并实现复数抽象数据类型(定义)ADT Complex 数据对象:D=c1,c2|c1,c2 R(R为实数集)数据关系:S=(c1为实部,c2为虚部)基本操作:void Assign(*A,c1,c2)void Ad
4、d(*A,B)void Minus(*A,B)void Multiply(*A,B)void Divide(*A,B).ADT Complex,Recap:抽象数据类型定义,第二章:线性表,10,例:定义并实现复数抽象数据类型(实现/类C描述)typedef ItemTypedouble;typedef structItemTyper;ItemTypev;Complex;/*复数抽象数据类型*/void Assign(Complex*A,ItemType r,ItemType v);void Add(Complex*A,Complex B);/*A+B*/void Minus(Complex*
5、A,Complex B);/*A-B*/void Multiply(Compex*A,Complex B);/*A*B*/void Divide(Complex*A,Complex B);/*A/B*/.,Recap:算法分析,第二章:线性表,11,正确性时间代价(时间复杂度)空间代价(空间复杂度)最优性,Recap:算法效率度量,第二章:线性表,12,渐进符号“大O”的定义:当且仅当存在一个正的常数 C,使得对所有的 n n0,有 f(n)Cg(n),则 f(n)=O(g(n),100n+6=O(n)/*100n+6101n for n6*/10n2+4n+2=O(n2)/*10n2+4n+
6、211n2 for n5*/6*2n+n2=O(2n)/*6*2n+n2 7*2n for n4*/,面试:顺序存储还是链式存储?,第二章:线性表,13,反问:操作是什么?,14,第1章 绪论第2章 线性表第3章 栈和队列 第4章 串第5章 数组和广义表第6章 树和二叉树 第7章 图第9章 查找第10章 排序,目 录,第二章:线性表,数据结构课程的起点:,什么是线性结构?,15,第二章:线性表,16,线性结构的定义:,若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。可表示为:(a1,a2,an),简言之,线性结构反映结点间的逻辑关系是
7、 的。,特点 只有一个首结点和尾结点;特点 除首尾结点外,其他结点只有一个直接前驱和一个直接后继。,线性结构包括:线性表、堆栈、队列、字符串、数组等,其中最典型、最常用的是-,线性表,一对一(1:1),第二章:线性表,17,第2章 线性表,2.1 线性表的逻辑结构 2.2 线性表的顺序表示和实现2.3 线性表的链式表示和实现2.4 应用举例,第二章:线性表,18,(a1,a2,ai-1,ai,ai1,,an),2.1 线性表的逻辑结构,线性表的定义:用数据元素的有限序列表示,n=0时称为,数据元素,线性起点,ai的直接前趋,ai的直接后继,下标,是元素的序号,表示元素在表中的位置,n为元素总个
8、数,即表长。n0,空表,线性终点,2.1 线性表的逻辑结构,19,(A,B,C,D,Z),例2 分析学生情况登记表是什么结构。,分析:数据元素都是同类型(记录),元素间关系是线性的。,分析:数据元素都是同类型(字母),元素间关系是线性的。,注意:同一线性表中的元素必定具有相同特性!,例1 分析26 个英文字母组成的英文表是什么结构。,2.1 线性表的逻辑结构,20,“同一数据逻辑结构中的所有数据元素都具有相同的特性”是指数据元素所包含的数据项的个数都相等。,是指各元素具有相同的数据类型,试判断下列叙述的正误:,2.1 线性表的逻辑结构,21,2.2.1 顺序表的表示,用一组地址连续的存储单元依
9、次存储线性表的元素。,把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。,线性表的顺序表示又称为顺序存储结构或顺序映像。,顺序存储定义:,顺序存储方法:,特点:,逻辑上相邻的元素,物理上也相邻,可以利用数组Vn来实现,注意:在C语言中数组的下标是从0开始,即:Vn的有效范围是从 V0Vn-1,2.2.1 顺序表的表示,22,1.逻辑上相邻的数据元素,其物理上也相邻;2.若已知表中首元素在存储器中的位置,则其他元素存放位置亦可求出(利用数组Vn的下标)。,设首元素a1的存放地址为LOC(a1)(称为首地址),设每个元素占用存储空间(地址长度)为L字节,则表中任一数据元素的存放地址为:
10、LOC(ai+1)=LOC(ai)+L LOC(ai)=LOC(a1)+L*(i-1),对上述公式的解释如图所示,线性表顺序存储特点:,2.2.1 顺序表的表示,23,地址 内容 元素在表中的位序,1,i,2,n,空闲区,i+1,L,b=LOC(a1),b+L,b+(i-1)L,b+(n-1)L,b+(max-1)L,LOC(ai)=LOC(a1)+L*(i-1),线性表的顺序存储结构示意图,下标起点是1,2.2.1 顺序表的表示,24,设有一维数组,下标的范围是到,每个数组元素用相邻的个字节存储。存储器按字节编址,设存储数组元素的第一个字节的地址是98,则的第一个字节的地址是多少?,答案:1
11、13,但此题要注意下标起点是从0开始:LOC(M3)=98+5(4-1)=113,解:已知地址计算通式为:,LOC(ai)=LOC(a1)+L*(i-1),例1,或用(3-0),2.2.1 顺序表的表示,25,char V30;void build()/字母线性表的生成,即建表操作 int i;V0=a;for(i=1;i=n-1;i+)Vi=Vi-1+1;,核心语句:法1 Vi=Vi-1+1;法2 Vi=a+i;法3 Vi=97+i;,例2,用数组V来存放26个英文字母组成的线性表(a,b,c,z),写出在顺序结构上生成和显示该表的C语言程序。,省略了include语句,2.2.1 顺序表的
12、表示,26,void main(void)/主函数,字母线性表的生成和输出 n=26;/n是表长,是数据元素的个数,而不是V的实际下标 build();display();,void display()/字母线性表的显示,即读表操作 int i;for(i=0;i=n-1;i+)printf(%c,vi);printf(n);,执行结果:a b c d e f g h i j k l m n o p q r s t u v w x y z,2.2.1 顺序表的表示,27,2.2.2 顺序表的操作,数据结构的基本运算:修改、插入、删除、查找、排序,1)修改 通过数组的下标便可访问某个特定元素并修
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 线性
链接地址:https://www.desk33.com/p-229822.html