- 1、本文档共69页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【零基础学数据结构】第3章 线性表---机械工业,陈锐 著...
第3章 线性表 线性表是一种最简单的线性结构。线性结构的特点是:在非空的有限集合,只有唯一的第一个元素和唯一的最后一个元素。第一个元素没有直接前驱元素,最后一个元素没有直接后继元素。其它元素都有唯一的前驱元素和唯一的后继元素。线性表可以用顺序存储结构和链式存储结构存储,可以在线性表的任意位置进行插入和删除操作 . 3.1 线性表的概念及运算 线性表是一种最简单且最常用的一种线性结构。本节主要介绍线性表的逻辑结构及在线性表上的运算。 3.1.1 线性表的逻辑结构 一个线性表由有限个类型相同的数据元素组成。在这有限个数据元素中,数据元素构成一个有序的序列,除了第一个元素和最后一个元素外,其它元素有唯一的前驱元素和唯一的后继元素。 在简单的线性表中,可以把每一英文单词看成是一个线性表。表中的每一英文字母就是一个数据元素,每个数据元素之间存在着唯一的顺序关系。 3.1.1 线性表的逻辑结构 在较复杂的线性表中,一个数据元素可以由若干个数据项组成,如图3.2所示的一个学校的教职工情况表中,一个数据元素由姓名、性别、出生年月、籍贯、学历、职称及任职时间七个数据项组成。这时,数据元素也称为记录。 3.1.2 线性表的抽象数据类型 1.数据对象集合 2.基本操作集合 3.2 线性表的顺序表示与实现 要在计算机上实现线性表的操作,必须将其逻辑结构转化为计算机可以识别的存储结构形式。线性表的存储结构主要有两种:顺序存储结构和链式存储结构。本节的主要学习内容包括线性表的顺序存储结构及顺序存储结构下的操作实现。 3.2.1 线性表的顺序存储结构 线性表的顺序存储指的是将线性表中的元素存放在一组连续的存储单元中。这样的存储方式使得线性表逻辑上相邻的元素,其在物理存储单元也是相邻的。采用顺序存储结构的线性表称为顺序表。 假设线性表有n个元素,每个元素占用m个存储单元,如果第一个元素的存储位置记为LOC(a1),第i个元素的存储位置记为LOC(ai),第i+1个元素的存储位置记为LOC(ai+1)。 3.2.1 线性表的顺序存储结构 线性表的顺序存储结构描述如下。 #define ListSize 100 typedef struct { DataType list[ListSize]; int length; }SeqList; 3.2.2 顺序表的基本运算 在顺序存储结构中,线性表的基本运算如下。以下算法的实现保存在文件“SeqList.h”中。 3.2.2 顺序表的基本运算 (1)线性表的初始化操作。线性表的初始化就是将线性表初始化为空表,只需要将线性表的长度置为0即可。线性表的初始化实现代码如下。 void InitList(SeqList *L) { L-length=0; /*把线性表的长度置为0*/ } 3.2.2 顺序表的基本运算 (2)判断线性表是否为空。线性表为空的标志就是线性表的长度length为0。判断线性表是否为空的实现代码如下。 int ListEmpty(SeqList L) { if(L.length==0) /*判断线性表的长度是否为0*/ return 1;/*当线性表为空时,返回1;否则返回0*/ else return 0; } 3.2.2 顺序表的基本运算 (3)按序号查找操作。 int GetElem(SeqList L,int i,DataType *e) { /*在查找第i个元素之前,判断该序号是否合法*/ if(i1||iL.length) return -1; *e=L.list[i-1]; /*将第i个元素的值赋值给e*/ return 1; } 3.2.2 顺序表的基本运算 (4)按内容查找操作。 int LocateElem(SeqList L,DataType e) { int i; for(i=0;iL.length;i++) /*从第一个元素开始比较*/ if(L.list[i]==e) return i+1; return 0; } 3.2.2 顺序表的基本运算 (5)插入操作。 3.2.2 顺序表的基本运算 (6)删除操作。 3.2.2 顺序表的基本运算 (7)返回线性表的长度操作。 int ListLength(SeqList L) { return L.length; } 3.2.2 顺序表的基本运算 (8)清空操作。 void ClearList(SeqList *L) { L-length=0;
您可能关注的文档
- SOHO中国中山广场.pdf
- SOHO中山广场(楼书电子版).pdf
- SOHO嘉盛中心电子楼书.pdf
- Sun的云计算架构介绍白皮书第1版(2009年6月).pdf
- SPARKS灵星广告介绍.pdf
- systemview通信方针.pdf
- thx3第2章_参数检测(温度).pdf
- UG4.0教程第八章 工程制图1.pdf
- TS-X-NIEP-NEEM-F-DC-78台山油漆要求.pdf
- VSS2005与VS2008集成指导文档.pdf
- DB42T1428.2-2025猕猴桃轻简高效生产技术规程 第2部分:机械化生产管理.docx
- DB42T2377-2025中小学健康校园建设指南.docx
- DB42T2387-2025黄颡鱼池塘圈养技术规范.docx
- DB42T2381-2025智慧社区居家养老信息平台管理与服务规范.docx
- DB42T1314-2025军队离休退休干部服务管理机构服务与管理规范.docx
- 铜铟镓硒太阳能电池薄膜溅射沉积设备-发布稿.pdf
- DB42T2379-2025公路桥梁HA级钢护栏设计施工技术规范.docx
- 航空用合金热塑板-发布稿.pdf
- DB42T2388-2025湖北省小型湖泊水生态修复指南.docx
- DB42T2385-2025浅水莲藕种植机械化作业技术规程.docx
文档评论(0)