【零基础学数据结构】第3章 线性表---机械工业,陈锐 著....ppt

【零基础学数据结构】第3章 线性表---机械工业,陈锐 著....ppt

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【零基础学数据结构】第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;

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档