凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

数据结构-线性表

已有 582 次阅读| 2016-3-14 15:33 |个人分类:C语言数据结构

一般来说,用计算机解决一个具体问题时,大致需要经过以下几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解此数学模型的算法,最后编出程序,进行测试、调整直至得到最终解答。寻求数学模型的实质是分析问题,从中提取操作的对象,并找住这些操作对象之间含有的关系,然后用数学的语言加以描述。例如,求解梁架结构中应力的数学模型为线性方程组;预报人口增长情况的数学模型为微分方程。然而,更多的非数值计算问题无法用书写方程加以描述。

2.线性表

线性结构的特点是:在数据元素的非空有限集中,(1)存在惟一的一个被称做“第一个”的数据元素;(2)存在惟一的一个被称做“最后一个”的数据元素;(3)除第一个之外,集合中的每个数据元素均只有一个前驱;(4)除最后一个之外,集合中每个数据元素只有一个后继。

线性表的类型定义

数据表示最常见且最简单的一种数据结构。简言之,一个线性表是n个数据元素的有限序列。至于每个元素的具体含义,在不同的情况下各不相同,它可以是一个数或一个符号,也可以是一页书,甚至其他更复杂的信息。例如:26个英文字母的字母表:

A,B,C,…,Z

是一个线性表,表中的数据元素是单个字母字符。又如,某校从1978年到1983年各种型号的计算机拥有量的变化情况,可以用线性表的形式给出:

6,17,28,50,92,188,

表中的数据元素是整数。

在稍复杂的线性表中,一个数据元素可以是由若干个数据项组成。在这种情况下,常把数据元素成为记录,含有大量记录的线性表又称为文件。

例如,一个学校的学生健康情况登记表如图所示,表中每个学生的情况为一个记录,它由姓名、学号、性别、年龄、班级和健康状况等6个数据项组成。

姓名

学号

性别

年龄

班级

健康状况

王小林

790631

18

91

健康

陈红

790632

20

92

一般

李建平

790633

21

93

健康

张立立

7900634

17

94

神经衰弱

学生健康情况登记

综合上述3个例子可见,线性表中的数据元素可以是各种各样的,但同一线性表中的元素必定具有相同特性,即属同一数据对象,相邻数据元素之间存在着序偶关系。若将线性表记为

a1ai-1,ai,ai+1an

则表中ai-1领先于aiai领先于ai+1,称ai-1ai的直接前驱元素,ai+1ai的直接后继元素。当i=1,2n-1时,有且仅有一个直接后继,当i=2,3n时,ai有且仅有一个直接前驱。

线性表中元素的个数n(n0)定义为线性表的长度,n=0时为空表。在非空表中的每个数据元素都有一个确定的位置,如ai是第一个数据元素,an是最后一个数据元素,ai是第i个数据元素,称i为数据元素ai在线性表中的位序。

线性表是一个相当灵活的数据结构,它的长度可根据增长或缩短,即对线性表的数据元素不仅可以进行访问,还可进行插入个删除等。

抽象数据类型线性表的定义如下:

ADT List

数据对象:D={ai|ai?ElemSeti=1,2nn0}

数据关系:R1={ai-1ai>| ai-1ai?Di=2n}

基本操作:

InitList&L

操作结果:构造一个空的线性列表L

DestroyList&L

初始条件:线性表L已存在。

操作结果:销毁线性表L

ClearList&L

初始条件:线性表L已存在。

操作结果:将L重置为空表。

ListEmptyL

初始条件:线性表L已存在。

操作结果:若L为空表,则返回TRUE,否则返回FALSE

GetElemLi&e

初始条件:线性表L已存在,1iListLengthL)。

操作结果:用e返回L中第i个数据元素的值。

LocateElemLecompare

厨师条件:线性表L已存在,compare()是数据元素判定函数。

操作结果:返回L中第1个与e满足条件compare()数据元素的位序。若这样的数据元素不存在,则返回值为0.

PriorElemLcur-e&pre-e

初始条件:线性表L已存在。

操作结果:若cur-eL的数据元素,且不是第一个,则用pre-e返回它的前驱,否则操作失败,pre-e无定义。

NextElemLcur-e&pre-e

初始条件:线性表L已存在。

操作结果:若cur-eL的数据元素,且不是第一个,则用pre-e返回它的后继,否则操作失败,pre-e无定义。

ListInsert&Lie

初始条件:线性表L已存在,1iListLengthL+1.

操作结果:在L中第i个位置之前插入新的数据元素eL的长度加1.

ListDelete&Lie

初始条件:线性表L已存在且非空,1iListLengthL)。

操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1.

ListTraverseLvisit

初始条件:线性表L已存在。

操作结果:依次对L的每个数据元素调用visit()。一旦visit()失败,则操作失效。

}ADT List

对上述定义的抽象数据类型线性表,还可进行一些更复杂的操作,例如,将两个或两个以上的线性表合并成一个线性表;把一个线性表拆开成两个或两个以上的线性表;重新复制一个线性表等。

凌阳教育,全国唯一一家原厂式嵌入式培训机构,专业从事嵌入式人才培训13年,最近新开课程信息安全工程师培训,想了解更多嵌入式资料下载或者是凌阳教育的动态,请访问凌阳教育官网www.sunplusedu.com


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-27 02:57 , Processed in 0.020237 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部