第2章 线性表 本章主要内容 2.1 线性表的定义和基本操作 2.2 线性表的顺序存储结构 2.3 线性表的链式存储结构 2.4 线性表的应用举例 2.1 线性表的定义和基本操作 线性表的定义 线性表是由n(n≥0)个类型相同的数据元素组成的有限序列。 L=( a1, a2,...,ai-1,ai,ai+1,...,an);其中:L为表名,习惯用大写书写;ai为该线性表的数据元素,习惯用小写书写; 线性表中数据元素的个数被称为线性表的长度,当n=0时,称为空线性表。 线性表特点 特点 除第一个和最后一个元素外,其他元素都存在唯一的前驱、后继关系 举例 La=(34,89,765,12,90,-34,22) 数据元素类型为int。 Ls=(?Hello?,?World?, ?China?, ?Welcome?) 数据元素类型为string。 举例 Lb=(book1,book2,...,book100) 数据元素类型为下列所示的结构类型: struct bookinfo{ int No; //图书编号 char *name; //图书名称 char *auther; //作者名称 ...; } 在现实中,这种类型的数据结构很多很多,如学生档案学籍系统、图书管理系统、仓库管理系统、设备管理系统等 线性表的基本操作 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) 注意:这些操作都是定义在逻辑层面上 2.2 线性表的顺序存储结构 顺序表元素在内存的存储地址 相邻两个数据元素的存储位置计算公式 LOC(ai+1)=LOC(ai)+L 线性表中任意一个数据元素的存储位置的计算 公式为:LOC(ai+1)=LOC(a1)+(i-1)*L 顺序存储结构的特点 逻辑与物理一致: 逻辑上相邻,物理上也相邻——利用数据元素的存储位置表示线性表中相邻数据元素之间的前后关系 随机存取: 可以利用上述给出的数学公式,快速地计算出任何一个数据元素的存储地址 顺序存储结构的类型定义 在C语言中,实现线性表的顺序存储结构的类型定义如下 #define MAXSIZE 100 typedef struct node { DataType data[MAXSIZE]; int length; } SeqList, *PseqList; 定义一个顺序表:SeqList L; 初始化一个线性表 PSeqList是指向SeqList 类型变量的指针类型; 定义:PSeqlist PL ; 则如下初始化PL=( PSeqList )malloc(sizeof(SeqList)) 或者 PL=L 典型操作的算法实现 1. 初始化线性表L PSeqList Init_SeqList(void ) { /*创建一顺序表,入口参数无,返回一个指向顺序表的指针,指针值为零表示分配空间失败*/ PSeqList PL; PL=( PSeqList )malloc(sizeof(SeqList)); if (PL) /*若SL=0表示分配失败*/ PL - length =0; retur
您可能关注的文档
最近下载
- 计算材料学课件:能带计算.ppt VIP
- 在线网课学堂《心理统计》单元考核测试答案.pdf VIP
- 《手术烟雾安全指南(2022版)》解读.pdf VIP
- 2024-2025学年扬州八年级数学下学期第一次月考卷【测试范围:苏科版八年级下册第七章-第九章】(全解全析).pdf VIP
- 世界贸易组织WTO规则课件(1-5).ppt VIP
- (六个对照)加强理论武装、执行上级组织决定、严格组织生活、加强党员管理监督、做好群众工作、抓好自身建设党支部2025年度组织生活会班子对照检查材料.docx VIP
- 2025年咸阳职业技术学院高职单招职业技能考试题库完整版带答案解析.docx VIP
- 光纤通信系统 第4版 习题及答案 沈建华 第1--4章.pdf
- 建筑施工测量培训课件.ppt VIP
- CNAS管理评审报告.docx VIP
原创力文档

文档评论(0)