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

第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 }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 西华师范大学:《算法与程序设计》课程教学资源_第一章 数据结构基础概论.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第十一章 外排序.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第十章 算法设计.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第十二章 非递归化.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第四章 串和数组.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第八单元 指针与函数.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第九单元 文件.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第七单元 指针的概念.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第六单元 结构体和共用体类型.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第五单元 编译预处理.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第四单元 表达式与函数.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第三单元 数据类型.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第二单元 控制结构.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第一单元 Hello, C!.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_教学大纲.doc
- 西华师范大学:《算法与程序设计》课程教学资源_数学实验.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_习题一.doc
- 西华师范大学:《算法与程序设计》课程教学资源_实验内容与上机指导.ppt
- 西华师范大学:《算法与程序设计》课程教学资源_目录.ppt
- 西华师范大学:《算法与程序设计》课程教学资源_第一章 误差 基本要求.ppt
- 西华师范大学:《算法与程序设计》课程教学资源_第三章 栈和队列.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第五章 树和二叉树.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第六章 图.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第三章 非线性方程的数值解法.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第二章 解线性代数方程组的直接方法.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第五章 求矩阵特征根和特征向量的数值方法.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第四章 解线性代数方程组的迭代法.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第六章 代数插值.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第七章 样条函数.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第八章 数值积分.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第九章 常微分初值问题的数值解.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第九章 复杂度及其分析.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第七章 查找.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第八章 排序.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第九章 文件.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第一章 基本知识.pdf
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)第二章 Java语言基础.ppt
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)第六章 图形界面设计.ppt
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)第七章 多线程机制.ppt
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)金额的中文大小写方式.ppt