软件设计师培训资料PX11010600009课件专题9线性数据结构.ppt

软件设计师培训资料PX11010600009课件专题9线性数据结构.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
专题9 数据结构(一) 线性数据结构 9.1 数据结构概述 基本概念 数据结构研究了计算机需要处理的数据对象和对象之间的关系;刻画了应用中涉及到的数据的逻辑组织;也描述了数据在计算机中如何存储、传送、转换。 数据结构是指数据对象及相互关系和构造方法,一个数据结构B形式上可以用一个二元组表示为B=(A,R)。其中,A是数据结构中的数据(称为结点)的非空有限集合,R是定义在A上的关系的非空有限集合 9.1 数据结构概述 数据结构中,结点与结点间的相互关系是数据的逻辑结构。数据结构在计算机中的表示(又称为映象)称为数据的物理结构,也称存储结构。 数据的逻辑结构分为两类: 线性结构:线性表、栈、队列和串 非线性结构:树、图 数据的存储方法有四类: 顺序存储方法 链接存储方法 索引存储方法 散列存储方法 9.2 线性表 定义: n个性质相同的数据元素组成的有限序列。每个元素最多有一个前驱和一个后继。 表示: 一个由n个结点e0,e1…,en-1组成的线性表记为:(e0,e1…,en-1)。 运算: INITIATE(L)初始化操作 LENGTH(L)? 求长度函数 GET(L,i)? 取元素函数 PRIOR(L,elm)求前驱函数 NEXT(L,elm) 求后继函数 LOCATE(L,x) 定位函数 INSERT(L,i,b)插入操作 DELETE(L,i) ??删除操作 9.2 线性表 存储方式: (1)顺序存储 特征:表中节点的存储是连续的,占用一块连续存储区,一般节点的数量是固定的; 优点:简单、节省存储空间 ; 缺点:不便于增加/删除数据。 数据1 后继:2 数据2 后继:3 数据3 后继:4 …… …… 数据n-1 后继:n 数据n end 9.2 线性表 存储方式: (2)链式存储 特征:表中节点的存储是不连续的,一般节点的数量是不固定的; 优点:便于增加/删除数据; 缺点:复杂、占用更多空间。 数据1 后继 数据2 后继 数据3 后继 …… …… 数据n-1 后继 数据n end typedef struct { Data_t data; //数据域 Node_t* next; //后继域 }Node_t, *PNode_t; //提供的操作有 :初始化、插入、删除等。 9.2 线性表 存储方式: (2)链式存储 循环链表:最后一个结点的 link 指针不为 0 (NULL),而是指向了表的前端。只要知道表中某一结点的地址,就可搜寻到所有其他结点的地址。 双向链表:结点中有两个指针域,其一指向直接后继,另一指向直接前趋。双向链表克服了单链表的单向性的缺点。 9.3 栈 定义: 仅允许在表尾进行插入和删除的线性表。 表示: 若有栈?S=(a0,a1,…,an-1)则a0为栈底结点,an-1为栈顶结点。 运算: 入栈push(s,x) 出栈pop(s) 判断空栈empty(s) 判断栈满full(s) 9.3 栈 存储方式: (1)顺序存储 利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时设指针top指示栈顶元素的当前位置。 判断栈满: int stackfull(seqstack *s) { return (s-top= =stacksize-1); } 进栈: void push(seqstack *s,datatype x) { if (stackfull(s)) error(“stack verflow”); s-data[++s-top]=x; } 9.3 栈 存储方式: (1)顺序存储 判断栈空: int stackempty(seqstack *s) { return (s-top= = -1) } 出栈: datatype pop(seqstack *s) { if (stackempty(s)) error(“stack underflow”); x=s-data[top]; s-top--; return (x); } 9.3 栈 (2)链式存储 用链表实现的栈,链表第一个元素是栈顶元素,链表的末尾是栈底节点,链表的头指针就是栈顶指针,栈顶指针为空则是空栈。若同时需要两个以上的栈,最好采用链表作存储结构 进栈: Void push(linkstack *p,datatyp

文档评论(0)

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

大部分文档都有全套资料,如需打包优惠下载,请留言联系。 所有资料均来源于互联网公开下载资源,如有侵权,请联系管理员及时删除。

1亿VIP精品文档

相关文档