收藏 分享(赏)

第2章+线性表_1_顺序表.ppt

上传人:j35w19 文档编号:4724869 上传时间:2019-01-09 格式:PPT 页数:25 大小:187.50KB
下载 相关 举报
第2章+线性表_1_顺序表.ppt_第1页
第1页 / 共25页
第2章+线性表_1_顺序表.ppt_第2页
第2页 / 共25页
第2章+线性表_1_顺序表.ppt_第3页
第3页 / 共25页
第2章+线性表_1_顺序表.ppt_第4页
第4页 / 共25页
第2章+线性表_1_顺序表.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、第2章 线性表,2.1 线性表的定义和运算,一、线性表的定义:,1、定义: 线性表 L是由n个元素a1,a2,an组成的有限序列。记作L=(a1,a2, ,an) 注:(1)n=0为表长;(2)n=0时为L空表;记作L=() 如:字母表A,B,C,Z数字表(0,1,2,3,9) (同一表中,元素类型相同。),2、特点:, ai-1 , ai , ai+1 , ai-1 称为 ai 的直接前驱, ai+1称为 ai 的直接后继。除首元素外每个元素有且仅有一个直接前驱; 除尾元素外每个元素有且仅有一个直接后继;,二、线性表的基本运算,(1)初始化 initial_list(L) 建空表;(2)求表

2、长 list_length(L) (3)按序号取元素 get_element(L,i) (4)按值查找 list_locate(L,x),(5)插入 list_insert(L,i,x) 在表中第i个位置上插入元素x;1 i n+1(6)删除 list_delete(L,i) 删除表中第i个元素;1 i n,2.2 顺序表,一、线性表的顺序存储结构,1、定义:假设有一个足够大的连续的存储空间,将线性表中的元素按其逻辑次序依次存储到这一存储空间中,由此方式存储的线性表称为顺序表。,顺序表示意图,n-1,2、类型描述 #define maxlen 100 typedef struct elemen

3、ttype datamaxlen;int listlen; seqlist;变量定义,如:seqlist L,L1; 注:a:datamaxlen的下标是0到maxlen-1;b:listlen是线性表的长度,最后一个元素下标是listlen-1;,3、顺序表的特点:逻辑上相邻的元素,其存储地址也相邻;即,可以随机存取元素。,二、顺序表运算的实现,1、初始化(建空表): void initial_list(seqlist *L) L-listlen=0; 2、求表长: int list_length(seqlist L) return L.listlen; ,3、按序号取元素: void ge

4、t_element(seqlist L,int i,elementtype ,4、按值查找:(找到则返回其序号,否则返回0) int list_locate(seqlist L,elementtype x) int i;for(i=0;iL.listlen;i+) if (L.datai=x) return(i+1); return(0); ,5、插入:,分析:首先判断顺序表是否为满,以及i的取值;若可以插入,则执行下列操作:(1)将aian后移一位;(2)插入x;(3)表长+1,void list_insert( seqlist *L,int i,elementtype x ) int j;

5、 if (L-listlen=maxlen) error(“溢出”);else if(iL-listlen+1) error(“序号错误”);else for(j=L-listlen-1;j=i-1;j-) L-dataj+1=L.dataj;L-datai-1=x;L-listlen+; ,插入算法的时间分析在i=1,2,n+1时,元素移动的次数分为n,n-1,0。平均移动次数(等概率情况下):(0+1+n)/(n+1)=n/2,6、删除:,分析:首先判断顺序表是否为空以及i的取值;可以则删除:(1)ai+1an往前移一位;(2)表长-1;,void list_delete(seqlist

6、*L,int i) int j;if (L-listlenL-listlen) error(“序号错误”);else for (j=i; jlistlen-1; j+) L-dataj-1=L-dataj;L-listlen-; ,删除算法的时间分析:在i=1,2,n时,元素移动的次数分别为n-1,n-2,,0。平均移动次数:(0+1+(n-1)/n=(n-1)/2,三、顺序表的应用,已知顺序表L递增有序,设计算法,在L中插入元素x,使得L依然递增有序。,例,算法如下: void insert( seqlist *L,elementtype x ) int i=L-listlen-1; if (i=maxlen-1) error(“溢出”);else while(i=0 ,解:,The End,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 统计图表

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报