《计算机应用基础课件》1.2线性表.ppt
《《计算机应用基础课件》1.2线性表.ppt》由会员分享,可在线阅读,更多相关《《计算机应用基础课件》1.2线性表.ppt(63页珍藏版)》请在三一办公上搜索。
1、,第 1 章 数据结构,1.1 基本数据结构与算法 1.2 线性表 1.3 栈和队列1.4 树和二叉树 1.5 查找1.6 内部排序,姓名 学号 成绩 班级 李红 9761059 95 机97.6,10,65,865,1.2 线性表,1.线性表的定义1)定义:具有相同数据类型的n(n0)个数据元素组成的有限序列。是最简单、最常用的数据结构。2)表示:,L=(a0,a2,a3,ai-1,ai,ai+1,,.,an-1),其中:n为线性表长度(n=0称为空表),表中相邻元素之间存在着顺序关系。a0:表头元素;an-1:表尾元素;ai-1称为ai的直接前驱;ai+1 称为ai的直接后继。,表头,表尾
2、,1.2 线性表,1.线性表的定义1)定义:具有相同数据类型的n(n0)个数据元素组成的有限序列。是最简单、最常用的数据结构。2)表示:,L=(a0,a2,a3,ai-1,ai,ai+1,.,an-1),3)线性结构特点:,(1)有且只有一个根结点a0,无前驱。(2)有且只有一个终端结点an-1,无后继。(3)其他结点有且只有一个直接前驱和一个直接后继。,1.2 线性表,1.线性表的定义1)定义:具有相同数据类型的n(n0)个数据元素组成的有限序列。是最简单、最常用的数据结构。2)表示:,3)线性结构特点:,4)线性表的分类(1)简单线性表:数据元素是简单项(数字、字母、季节名等)。如:(12
3、,34,4,67,8)(2)复杂线性表:数据元素由若干个数据项组成,此时数据元素称为记录或结点,如学生成绩表.,L=(a0,a2,a3,ai-1,ai,ai+1,.,an-1),学生健康情况登记表如下:,1.顺序表基本概念,1.2.2 线性表的顺序存储结构,1)顺序存储结构:用一组地址连续的存储空间依次存放线性表的各元素。,顺序表:采用顺序存储结构的线性表称为顺序表(一维数组),表中的所有元素所占存储空间连续表中各元素在存储空间中按逻辑顺序存放,顺序存储结构特点,1.2 线性表,1.顺序表基本概念,4.2.2 线性表的顺序存储结构,1)顺序存储结构:,2)第i个元素地址,4.2 线性表,其中:
4、m:每个元素占m个存储单元Loc(a0)第一个元素地址(基址),b,b+m,b+i*m,b+n*m,存储地址,存储状态,空闲,数据元素在线性表中的位序,12,n,i,从存取方式看,线性表的顺序存储结构是可以随机存储的存储结构.,1.顺序表基本概念,1.2.2 线性表的顺序存储结构,1)顺序存储结构:,2)第i个元素地址,1.2 线性表,2.顺序表的基本运算 存取:访问线性表的第i个元素,使用或改变数据元素的值。查找:在线性表中查找满足某种条件的数据元素。插入:在线性表的第i个元素之前,插入一个同类型的元素。(*)删除:删除线性表中第i个元素。(*)求表长:求出线性表中元素的个数。置空表:建立一
5、个空表。清除表:将已有线性表变为空表,即删除表中所有元素。,1.顺序表基本概念,1.2.2 线性表的顺序存储结构,1)顺序存储结构:,2)第i个元素地址,1.2 线性表,2.顺序表的基本运算,插入和删除,1)顺序表的插入运算:在线性表的第i个元素之前插入一个新的元素,先移动,后插入。,x,ai,先移动后插入,x,步骤:,(1)将ai an顺序向后移动,为新元素让出位置(2)将x置入”空出”的第i个位置,举例:(在第4个和第5个元素之间插入元素91),21,91,插入程序举例(在8个数中任意位置插入一个数):#define N 8main()int aN+1=12,34,45,6,78,9,10
6、,91,i,j,x;printf(“input the location to be inserted:”);scanf(“%d,%d”,for(j=i-1;j=N-1;j+)aj+1=aj;,for(j=N-1;j=i-1;j-)aj+1=aj;,在第i个位置上作插入x,则需将第i个至第n个元素移动,即共需移动(n-i+1)个元素。,插入运算时间性能分析:,插入运算,时间主要消耗在数据移动上。在长度为n的线性表中插入一个元素,则平均移动元素次数(期望值):,pi:在第i个位置上作插入的概率。,等差数列求和公式:(首项+末项)项数)/2,(n-i+1),线性表(a0,a1,a2)平局移动元素个
7、数:()*(3+2+1+0)=1.5,在一线性表(a0,a1,a2)中插入任意一数i,求平局移动元素次数:,i 移动次数(n-i+1)1(插入到第个数a0前)3 2(插入到第2个数a1前)23(插入到第3个数a2前)1(插入到第3个数a2后)0,1.顺序表基本概念,1.2.2 线性表的顺序存储结构,1)顺序存储结构:,2)第i个元素地址,1.2 线性表,2.顺序表的基本运算,插入和删除,2)顺序表删除运算:,定义:指将表中第i个元素从线性表中去掉。,原表长为n:(a0,a1,ai-1,ai,ai+1,an-1),新表长为n-1:(a0,a1,ai-1,ai+1,an-1),步骤:,(1)将ai
8、+1 an-1,顺序向前移动(2)表长减一,举例:(删除第五个元素21),时间性能分析:,时间消耗与插入运算相同,平均移动元素次数:,qi:在第i个位置上作插入的概率。设qi=1/n 共需移动(n-i)个元素。,67,i 移动次数(n-i)1(删除第1个数a0)22(删除第2个数a1)13(删除第3个数a2)0,线性表(a0,a1,a2)平局移动元素个数:(1/3)*(2+1+0)=1,在一线性表(a0,a1,a2)中删除任意一数i,求平局移动元素次数:,作业:有一数组,存储十个数,编程序删除其中任意一个数。,1.顺序表基本概念,3.顺序表优点和缺点,优点:,逻辑上相邻元素存储位置也相邻,无需
9、增加额外存储空间可方便随机存取表中任一元素。,缺点:,插入和删除运算不方便,必须移动大量结点,效率较低不适合元素经常变动的大的线性表。,1.2.2 线性表的顺序存储结构,1.2 线性表,2.顺序表的基本运算,链式存储结构特点:,1.2.3 线性表的链式存储结构,存储空间可以不连续。不要求逻辑上相邻的元素在物理位置上也相邻。数据元素间逻辑关系由指针域确定。,1.2 线性表,即 链表存储结构是一种动态数据结构,其特点是它包含的据对象的个数及其相互关系可以按需要改变,存储空间是程序根据需要在程序运行过程中向系统申请获得,链表也不要求逻辑上相邻的元素在物理位置上也相邻,它没有顺序存储结构所具有的弱点。
10、,name,sum,next,结构体元素,结构体元素的地址,结构体元素的成员是地址型数据,struct student char name10;int sum;struct student*next;,p,struct student*p;,strcpy(p-name,”zhang”);p-sum=335;p-next=?,head,p1,p2,p3,有四个结构体元素:,head,有四个结构体元素:,head,(3)尾结点的指针域置为“NULL(空)”,作为链表结束的标志,(1)头指针变量head指向链表的首结点。,(2)每个结点由2个域组成:1)数据域存储结点本身的信息。2)指针域指向后继结
11、点的指针。,struct student char name10;int sum;struct student*next;,链式存储结构特点:,2.线性链表:定义:线性表的链式存储结构称为线性链表,1.2.3 线性表的链式存储结构,数据域:一部分存放数据元素值 指针域:存放指针,用于指向该结点的 前一个结点或后一个结点,线性链表中结点组成:,分类:单链表、循环单链表、双向链表,1.2 线性表,其单链表示意图如下:,有一线性表:(bat,cat,eat,fat,hat,jat,lat,mat),110 130 135 160头指针 head 165 170 200 205,简化为:,链尾,略,单
12、链表是由表头唯一确定,因此单链表可以用头指针的名字来命名。,例如:若头指针名是head,则把链表称为表head。,head,用C语言描述的单链表如下:,struct node char name20;struct node*next;struct node*head;,typedef struct node char name20;struct node*next;LinkList;LinkList*head;,新的类型名代换旧的类型名,也就是说:LinkList等价与struct node,链式存储结构特点:,2.线性链表:,1.2.3 线性表的链式存储结构,1.2 线性表,3.单链表:定义
13、:由n个结点链接,且每个结点中只包含一个指针域的链表。,例:线性单链表(A,B,C,D,E,F),逻辑状态,其中:head称为单链表的头指针,指向表中的第一个结点,物理状态,头指针 存储地址 数据域 指针域,1713192531,单链表存取:必须从头指针开始进行,依次顺着指针向链尾方向扫描。找到各个元素,因此说线性表的链式存储结构是一种顺序存储的存储结构。,head,head,head,带头节点的单链表,编程:创建带头节点的单链表。,程序算法:(1)定义三个结构体类型的指针变量head,p,s(2)利用malloc函数开辟头结点,由head,p共同来指向(3)再利用malloc函数开辟相应的内
14、存空间,由s来指向(4)由键盘输入数据,赋给s所指向的内存空间(5)p-next=s;(6)p=s;(7)回到第(3)步;,程序算法:(1)定义三个结构体类型的指针变量head,p,s(2)利用malloc函数开辟头结点,由head,p共同来指向(3)再利用malloc函数开辟相应的内存空间,由s来指向(4)由键盘输入数据,赋给s所指向的内存空间(5)p-next=s;(6)p=s;(7)回到第(3)步;,head=p=(strutc node*)malloc(sizeof(struct node);,head,p,对带头结点的复杂链表的基本操作创建,程序算法:(1)定义三个结构体类型的指针变
15、量head,p,s(2)利用malloc函数开辟头结点,由head,p共同来指向(3)再利用malloc函数开辟相应的内存空间,由s来指向(4)由键盘输入数据,赋给s所指向的内存空间(5)p-next=s;(6)p=s;(7)回到第(3)步;,A,s-data=getchar();,s,p,对带头结点的复杂链表的基本操作创建,head,p,程序算法:(1)定义三个结构体类型的指针变量head,p,s(2)利用malloc函数开辟头结点,由head,p共同来指向(3)再利用malloc函数开辟相应的内存空间,由s来指向(4)由键盘输入数据,赋给s所指向的内存空间(5)p-next=s;(6)p=
16、s;(7)回到第(3)步;,s,p,对带头结点的复杂链表的基本操作创建,A,s,head,p,B,head,head,带头节点的单链表,typedef struct nodechar data;struct node*next;Linklist;Linklist*head,*p,*s;char ch;head=(Linklist*)malloc(sizeof(Linklist);printf(input letters to create a list:n);while(ch=getchar()!=n)s=(Linklist*)malloc(sizeof(Linklist);s-data=ch
17、;p-next=s;p=s;p-next=NULL;,编程:创建带头节点的单链表。,带头节点的单链表,typedef struct nodechar data;struct node*next;Linklist;Linklist*head,*p,*s;char ch;head=(Linklist*)malloc(sizeof(Linklist);printf(input letters to create a list:n);p=head;while(ch=getchar()!=n)s=(Linklist*)malloc(sizeof(Linklist);s-data=ch;p-next=s;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机应用基础课件 计算机 应用 基础 课件 1.2 线性

链接地址:https://www.31ppt.com/p-5904111.html