当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

西华师范大学:《算法与程序设计》课程教学资源_第二章 线性表

资源类别:文库,文档格式:PDF,文档页数:58,文件大小:2.53MB,团购合买
一、线性表的定义和基本操作 二、线性表的顺序存储结构 三、线性表的链式存储结构 四、线性表的应用举例
点击下载完整版文档(PDF)

第2章线性表 本章主要介绍下列内容 线性表的定义和基本操作 线性表的顺序存储结构 线性表的链式存储结构 线性表的应用举例 西顺大学教学与信息学院 退出

ぜ2【 ㏮ᕖ㶗 ᴀゴЏ㽕ҟ㒡ϟ߫ݙᆍ l 㒓ᗻ㸼ⱘᅮН੠෎ᴀ᪡԰ l 㒓ᗻ㸼ⱘ乎ᑣᄬټ㒧ᵘ l 㒓ᗻ㸼ⱘ䫒ᓣᄬټ㒧ᵘ l 㒓ᗻ㸼ⱘᑨ⫼В՟ ߎ䗔

2,1线性表的定义和基本操作 2,2线性表的顺序存储结构 2.3线性表的链式存储结构 2.4线性表的应用举例 西顺大学教学与信息学院

2.1 㒓ᗻ㸼ⱘᅮН੠෎ᴀ᪡԰ 2.2 㒓ᗻ㸼ⱘ乎ᑣᄬټ㒧ᵘ 2.3 㒓ᗻ㸼ⱘ䫒ᓣᄬټ㒧ᵘ 2.4 㒓ᗻ㸼ⱘᑨ⫼В՟

21线性表的定义和基 本操作 2.1.1线性表的定义 线性表是由n(n≥0)个类型相同的数据元素组成 的有限序列。通常表示成下列形式: L=(aj, a2 a;i s a; a, i+1geeegan 其中:L为线性表名称,习惯用大写书写; 为组成该线性表的数据元素,习惯用小写书写; 线性表中数据元素的个数被称为线性表的长度, 当n=0时,线性表为空,又称为空线性表。 西顺大学教学与信息学院

2.1 㒓ᗻ㸼ⱘᅮН੠෎ ᴀ᪡԰ 2.1.1 㒓ᗻ㸼ⱘᅮН 㒓ᗻ㸼ᰃ⬅n˄nı0˅Ͼ㉏ൟⳌৠⱘ᭄᥂ܗ㋴㒘៤ ⱘ᳝䰤ᑣ߫DŽ䗮ᐌ㸼⼎៤ϟ߫ᔶᓣ˖ L=( a1 , a2 ,...,ai-1,ai ,ai+1,...,an ) ݊Ё˖LЎ㒓ᗻ㸼ৡ⿄ˈдᛃ⫼໻ݭкݭ˗ aiЎ㒘៤䆹㒓ᗻ㸼ⱘ᭄᥂ܗ㋴ˈдᛃ⫼ᇣݭкݭ˗ 㒓ᗻ㸼Ё᭄᥂ܗ㋴ⱘϾ᭄㹿⿄Ў㒓ᗻ㸼ⱘ䭓ᑺˈ ᔧn=0ᯊˈ㒓ᗻ㸼Ўぎˈজ⿄Ўぎ㒓ᗻ㸼DŽ

举例 La=(34,89,765,12,90,-34,22)数据元 素类型为int Ls=("Hly; World"," China"," Welcome")数据 元素类型为 string Lb=( book,, book, book)数据元素类型为下列 所示的结构类型: struct bookinfo int No: 图书编号 char *names /图书名称 char *auther ∥作者名称 西顺大学教学与信息学院

В՟ La=˄34ˈ89ˈ765ˈ12ˈ90ˈ-34ˈ22˅ ᭄᥂ܗ ㋴㉏ൟЎintDŽ Ls=(²Hello² , ²World² , ²China² , ²Welcome²) ᭄᥂ ܗ㋴㉏ൟЎstringDŽ Lb=(book1 ,book2 ,...,book100) ᭄᥂ܗ㋴㉏ൟЎϟ߫ ᠔⼎ⱘ㒧ᵘ㉏ൟ˖ struct bookinfo{ int No; //೒к㓪ো char *name; //೒кৡ⿄ char *auther; //԰㗙ৡ⿄ ...; }

2.1.2线性表的基本操作 1.初始化线性表 L Initlis(U 2.销毁线性表 L Destory list(l) 3.清空线性表 L Clearlisti(L 4.求线性表L的长度 Listlength(L) 5.判断线性表L是否为空 IsEp① 6.获取线性表L中的某个数据元素内容 GetElem(L,i, e) 7.检索值为e的数据元素 Locateelem(L,e) 8.返回线性表L中e的直接前驱元素 Priorelem(L,e) 9.返回线性表L中e的直接后继元素 Nextelem(L,e) 10.在线性表L中插入一个数据元素 ListInsert(l,i,e) 1l.删除线性表L中第个数据元素 ListDelete(Lie) 西顺大学教学与信息学院

2.1.2 㒓ᗻ㸼ⱘ෎ᴀ᪡԰ 1. ߱ྟ࣪㒓ᗻ㸼L InitList(L) 2. 䫔↕㒓ᗻ㸼L DestoryList(L) 3. ⏙ぎ㒓ᗻ㸼L ClearList(L) 4. ∖㒓ᗻ㸼Lⱘ䭓ᑺ ListLength(L) 5. ߸ᮁ㒓ᗻ㸼Lᰃ৺Ўぎ IsEmpty(L) 6. 㦋প㒓ᗻ㸼LЁⱘᶤϾ᭄᥂ܗ㋴ݙᆍ GetElem(L,i,e) 7. Ẕ㋶ؐЎeⱘ᭄᥂ܗ㋴ LocateELem(L,e) 8. 䖨ಲ㒓ᗻ㸼LЁeⱘⳈ᥹ࠡ偅ܗ㋴ PriorElem(L,e) 9. 䖨ಲ㒓ᗻ㸼LЁeⱘⳈ᥹ৢ㒻ܗ㋴ NextElem(L,e) 10. ೼㒓ᗻ㸼LЁᦦܹϔϾ᭄᥂ܗ㋴ ListInsert(L,i,e) 11. ߴ䰸㒓ᗻ㸼LЁ㄀iϾ᭄᥂ܗ㋴ ListDelete(L,i,e)

22线性表的顺序存储结构 22.1线性表的顺序存储结构 线性表的顺序存储结构是指用一组连续的存储单 元依次存储线性表中的每个数据元素。如下图2-1所 西顺大学教学与信息学院

2.2 㒓ᗻ㸼ⱘ乎ᑣᄬټ㒧ᵘ 2.2.1 㒓ᗻ㸼ⱘ乎ᑣᄬټ㒧ᵘ 㒓ᗻ㸼ⱘ乎ᑣᄬټ㒧ᵘᰃᣛ⫼ϔ㒘䖲㓁ⱘᄬټऩ ܗձ⃵ᄬټ㒓ᗻ㸼Ёⱘ↣Ͼ᭄᥂ܗ㋴DŽབϟ೒2-1᠔ ⼎˖

存储地址内存单元 d+L d+2L aaa d+(-)L d+(n-1)L a 图2-1线性表顺序存储结构示意图 西顺大学教学与信息学院

ܗᄬऩݙ ഔഄټᄬ ... d a1 d+L a2 d+2L a3 ... d+(i-1)L a i ... d+(n-1)L a n ... ... ೒2-1 㒓ᗻ㸼乎ᑣᄬټ㒧ᵘ⼎ᛣ೒

其中,L为每个数据元素所占据的存储单元数目。 相邻两个数据元素的存储位置计算公式 LOC(a+1=LoC(ai +L 线性表中任意一个数据元素的存储位置的计算公 式为: LOC(a+=LoC(a+(i-1)L 顺序存储结构的特点 (1)利用数据元素的存储位置表示线性表中相邻 数据元素之间的前后关系,即线性表的逻辑结构与存 储结构(物理结构)一致; 西顺大学教学与信息学院

݊ЁˈLЎ↣Ͼ᭄᥂ܗ㋴᠔ऴ᥂ⱘᄬټऩܗ᭄ⳂDŽ Ⳍ䚏ϸϾ᭄᥂ܗ㋴ⱘᄬټԡ㕂䅵ㅫ݀ᓣ LOC(ai+1)=LOC(ai )+L 㒓ᗻ㸼ЁӏᛣϔϾ᭄᥂ܗ㋴ⱘᄬټԡ㕂ⱘ䅵ㅫ݀ ᓣЎ˖ LOC(ai+1)=LOC(a1 )+(i-1)*L 乎ᑣᄬټ㒧ᵘⱘ⡍⚍ ˄1˅߽⫼᭄᥂ܗ㋴ⱘᄬټԡ㕂㸼⼎㒓ᗻ㸼ЁⳌ䚏 ᭄᥂ܗ㋴П䯈ⱘࠡৢ݇㋏ˈे㒓ᗻ㸼ⱘ䘏䕥㒧ᵘϢᄬ ټ㒧ᵘ˄⠽⧚㒧ᵘ˅ϔ㟈˗

(2)在访问线性表时,可以利用上述给出的数学 公式,快速地计算出任何一个数据元素的存储地址。 因此,我们可以粗略地认为,访问每个数据元素所花 费的时间相等。这种存取元素的方法被称为随机存取 法,使用这种存取方法的存储结构被称为随机存储结 构。 在C语言中,实现线性表的顺序存储结构的类型定 义 # define lIst maX length100线性表的 最大长度 typedef struct 素的[ryye+iem;指向存放线性表中数据元 Entr int length;线性表的当前长度 JSQ LIST 西顺大学教学与信息学院

˄2˅೼䆓䯂㒓ᗻ㸼ᯊˈৃҹ߽⫼Ϟ䗄㒭ߎⱘ᭄ᄺ ݀ᓣˈᖿ䗳ഄ䅵ㅫߎӏԩϔϾ᭄᥂ܗ㋴ⱘᄬټഄഔDŽ ಴ℸˈ៥Ӏৃҹ㉫⬹ഄ䅸Ўˈ䆓䯂↣Ͼ᭄᥂ܗ㋴᠔㢅 䌍ⱘᯊ䯈ⳌㄝDŽ䖭⾡ᄬপܗ㋴ⱘᮍ⊩㹿⿄Ў䱣ᴎᄬপ ⊩ˈՓ⫼䖭⾡ᄬপᮍ⊩ⱘᄬټ㒧ᵘ㹿⿄Ў䱣ᴎᄬټ㒧 ᵘDŽ ೼C䇁㿔Ёˈᅲ⦄㒓ᗻ㸼ⱘ乎ᑣᄬټ㒧ᵘⱘ㉏ൟᅮ Н #define LIST_MAX_LENGTH 100 //㒓ᗻ㸼ⱘ ᳔໻䭓ᑺ typedef struct { EntryType *item; //ᣛ৥ᄬᬒ㒓ᗻ㸼Ё᭄᥂ܗ ㋴ⱘ෎ഄഔ int length; //㒓ᗻ㸼ⱘᔧࠡ䭓ᑺ }SQ_LIST˗

222典型操作的算法实现 1.初始化线性表L int InitList(SQ LIST L) L->item= Entry Type )malloc(LIST MAX LENGtH *sizeof(Entry Type);∥分配空间 if(L->item=NULI) return Error;∥若分配空间不 成功,返回 ERROR L->length=0; ∥将当前线性表长度置0 return OK ∥成功返回OK 西顺大学教学与信息学院

2.2.2 ݌ൟ᪡԰ⱘㅫ⊩ᅲ⦄ 1. ߱ྟ࣪㒓ᗻ㸼L int InitList(SQ_LIST *L) { L->item=(EntryType*)malloc(LIST_MAX_LENGTH *sizeof(EntryType)); //ߚ䜡ぎ䯈 if (L->item==NULL) return ERROR; //㢹ߚ䜡ぎ䯈ϡ ៤ࡳˈ䖨ಲERROR L->length=0; //ᇚᔧࠡ㒓ᗻ㸼䭓ᑺ㕂0 return OK; //៤ࡳ䖨ಲOK }

点击下载完整版文档(PDF)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共58页,可试读20页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有