【精品】ppt资料---数据结构-清华大学严蔚敏ppt.pptx

【精品】ppt资料---数据结构-清华大学严蔚敏ppt.pptx

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

1. 数据结构的存储方式 数据结构在计算机内存中的存储包括数据元素的存储和元素之间的关系的表示。 元素之间的关系在计算机中有两种不同的表示方法:顺序表示和非顺序表示。由此得出两种不同的存储结构:顺序存储结构和链式存储结构。 顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系)。 链式存储结构:在每一个数据元素中增加一个存放另一个元素地址的指针(pointer ),用该指针来表示数据元素之间的逻辑结构(关系)。例:设有数据集合A={3.0,2.3,5.0,-8.5,11.0} ,两种不同的存储结构。 顺序结构:数据元素存放的地址是连续的; 链式结构:数据元素存放的地址是否连续没有要求。 数据的逻辑结构和物理结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。 数据结构的三个组成部分:逻辑结构: 数据元素之间逻辑关系的描述 D_S=(D,S)存储结构: 数据元素在计算机中的存储及其逻辑关系的表现称为数据的存储结构或物理结构。数据操作: 对数据要进行的运算。 2. 线性表 线性结构是最常用、最简单的一种数据结构。而线性表是一种典型的线性结构。其基本特点是线性表中的数据元素是有序且是有限的。在这种结构中:① 存在一个唯一的被称为“第一个”的数据元素;② 存在一个唯一的被称为“最后一个”的数据元素;③ 除第一个元素外,每个元素均有唯一一个直接前驱;④ 除最后一个元素外,每个元素均有唯一一个直接后继。2.2 线性表的顺序存储 顺序存储 :把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里。用这种方法存储的线性表简称顺序表。顺序存储的线性表的特点: ◆ 线性表中所有元素所占的存储空间是连续的; ◆ 数据元素在存储空间中是按逻辑顺序依次存放。 设有非空的线性表:(a1,a2,…an) 。顺序存储如图2-1所示。 … a1a2… ai … an…Loc(a1)Loc(ai)+(i-1)* l 图2-1 线性表的顺序存储表示 在具体的机器环境下:设线性表的每个元素需占用l个存储单元,以所占的第一个单元的存储地址作为数据元素的存储位置。则线性表中第i+1个数据元素的存储位置LOC(ai+1)和第i个数据元素的存储位置LOC(ai)之间满足下列关系: LOC(ai+1)=LOC(ai)+l 2.3 线性表的链式存储 2.3.1 线性表的链式存储结构 链式存储 :用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线性表简称线性链表。 存储链表中结点的一组任意的存储单元可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。 链表中结点的逻辑顺序和物理顺序不一定相同。data nextdata :数据域,存放结点的值。next :指针域,存放结点的直接后继的地址。图2-2 链表结点结构 为了正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其直接后继结点的地址(或位置),称为指针(pointer)或链(link),这两部分组成了链表中的结点结构,如图2-2所示。 链表是通过每个结点的指针域将线性表的n个结点按其逻辑次序链接在一起的。 每一个结只包含一个指针域的链表,称为单链表。 为操作方便,总是在链表的第一个结点之前附设一个头结点(头指针)head指向第一个结点。头结点的数据域可以不存储任何信息(或链表长度等信息)。batcat1305bat1300cat hat ?eateat3700hatNULLfat…… 3695fat1100 ……headhead1100……1300…2-3 带头结点的单链表的逻辑状态、物理存储方式 单链表是由表头唯一确定,因此单链表可以用头指针的名字来命名。例1、线性表L=(bat,cat,eat,fat,hat)其带头结点的单链表的逻辑状态和物理存储方式如图2-3所示。……an a1 a2 headhead非空表图2-6单循环链表示意图2.3.3 循环链表 循环链表(Circular Linked List):是一种头尾相接的链表。其特点是最后一个结点的指针域指向链表的头结点,整个链表的指针域链接成一个环。 从循环链表的任意一个结点出发都可以找到链表中的其它结点,使得表处理更加方便灵活。 图2-6是带头结点的单循环链表的示意图。空表2.4 双向链表 双向链表(Double Linked List) :指的是构成链表的每个结点中设立两个指针域:一个指向其直接前趋的指针域prior,一个指向其直接后继的指针域next。这样形成的链表中有两个方向不同的链,故称为双向链表。 和单链表类似,双向链表一般增加头指针也能使双链表上的某些运算变得方便。 将头结点和尾结点链接起

文档评论(0)

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

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

1亿VIP精品文档

相关文档