数据结构第二章教学.ppt
《数据结构第二章教学.ppt》由会员分享,可在线阅读,更多相关《数据结构第二章教学.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章 线性表线性结构特点:在数据元素的非空有限集中 存在唯一的一个被称作“第一个”的数据元素 存在唯一的一个被称作“最后一个”的数据元素 除第一个外,集合中的每个数据元素均只有一个前驱 除最后一个外,集合中的每个数据元素均只有一个后继主讲教师:戴磊 2.1 线性表的类型定义 定义:一个线性表是n 个数据元素的有限序列,a,()n ia a a 2 1如例 英文字母表(A,B,C,.Z)是一个线性表例数据元素 特征:v 元素个数n 表长度,n=0 空表v1in 时lai 的直接前驱是ai-1,a1 无直接前驱lai 的直接后继是ai+1,an 无直接后继v 元素同构,且不能出现缺项例2-1假设
2、有两个集合A 和B 分别用两个线性表LA 和LB 表示(即:线性表中的数据元素即为集合中的成员),现要求一个新的集合A A B。要求对线性表作如下操作:扩大线性表LA,将存在于线性表LB 中而不存在于线性表LA 中的数据元素插入到线性表LA 中。1从线性表LB 中依次取得每个数据元素;GetElem(LB,i)e2依值在线性表LA 中进行查访;LocateElem(LA,e,equal()3若不存在,则插入之。ListInsert(LA,n+1,e)voidunion(List&La,ListLb)/将所有在线性表Lb 中但不在La 中的数据元素插入到La 中La_len=ListLength
3、(La);Lb_len=ListLength(Lb);/求线性表的长度for(i=1;i=Lb_len;i+)GetElem(Lb,i,e);/取Lb 中第i 个数据元素赋给eif(!LocateElem(La,e,equal()ListInsert(La,+La_len,e);/La 中不存在和e 相同的数据元素,则插入之/union例2-2 已知一个非纯集合B,试构造一个纯集合A,使A 中只包含B 中所有值各不相同的数据元素。voidpurge(List&La,ListLb)/已知线性表Lb 中的数据元素依值非递减有序排列(Lb 是有序表)/构造线性表La,使其只包含Lb 中所有值不相同的
4、数据元素InitList(LA);La_len=ListLength(La);Lb_len=ListLength(Lb);/求线性表的长度for(i=1;i=Lb_len;i+)GetElem(Lb,i,e);/取Lb 中第i 个数据元素赋给eif(!equal(en,e)ListInsert(La,+La_len,e);en=e;/La 中不存在和e 相同的数据元素,则插入之/purge例2-3 归并两个“其数据元素按值非递减有序排列的”线性表LA 和LB,求得线性表LC 也具有同样特性设La=(a1,ai,an)Lb=(b1,bj,bm)Lc=(c1,ck,cm+n)则Ck=k=1,2,m
5、+n1分别从LA 和LB 中取得当前元素ai 和bj;2若aibj,则将ai 插入到LC 中,否则将bj 插入到LC 中。voidMergeList(ListLa,ListLb,List&Lc)/已知线性表La 和Lb 中的元素按值非递减排列。/归并La 和Lb 得到新的线性表Lc,/Lc 的元素也按值非递减排列。InitList(Lc);i=j=1;k=0;La_len=ListLength(La);Lb_len=ListLength(Lb);while(i=La_len)&(j=Lb_len)/La 和Lb 均非空GetElem(La,i,ai);GetElem(Lb,j,bj);if(a
6、i=bj)ListInsert(Lc,+k,ai);+i;elseListInsert(Lc,+k,bj);+j;while(i=La_len)GetElem(La,i+,ai);ListInsert(Lc,+k,ai);while(j=Lb_len)GetElem(Lb,j+,bj);ListInsert(Lc,+k,bj);/merge_list 2.2 线性表的顺序表示和实现 顺序表:v 定义:用一组地址连续的存储单元存放一个线性表叫v 元素地址计算方法:lLOC(ai)=LOC(a1)+(i-1)*LlLOC(ai+1)=LOC(ai)+Ll 其中:uL 一个元素占用的存储单元个数uL
7、OC(ai)线性表第i 个元素的地址v 特点:l 实现逻辑上相邻物理地址相邻l 实现随机存取v 实现:可用C 语言的一维数组实现a1a2an01n-112n内存V数组下标元素序号M-1/线性表的动态分配顺序存储结构#define LIST_INIT_SIZE 100#define LISTINCREMENT 10 typedef struct ElemType*elem;int length;int listsize;SqList;备用空间数据元素不是简单类型时,可定义结构体数组或动态申请和释放内存ElemType*p=(ElemType*)malloc(LIST_INIT_SIZE*size
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第二 教学
限制150内