备战NOIP2010提高组初赛复习——数据结构备战NOIP2010提高组初赛复习——数据结构.doc

备战NOIP2010提高组初赛复习——数据结构备战NOIP2010提高组初赛复习——数据结构.doc

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

备战NOIP2010提高组初赛复习——数据结构篇 早期的程序设计主要偏重于数值计算领域,采用的数据结构相对简单。例如FORTRAN语言仅定义了数组(包括多维数组)和复数两种结构型数据,这两种数据类型足以应付当时多数的科学计算问题。 但是随着现代科技的发展,计算机逐渐应用于数据处理和非数值计算问题,从客观事物中抽象出的数据日益显现出多样化的特征,简单的数据类型已远远不能满足需要,各数据元素之间的复杂联系已经不是普通的数学方程式所能表达的了。在这种背景下,一种专门研究数据之间结构关系的学科—数据结构便应运而生。 数据结构专门研究各种数据的表示、数据的类型以及它们之间关系的集合,其研究范围主要包括各种数据结构的性质,即它们的逻辑结构、物理结构以及施于其上的操作。数据结构的类型种类繁多,可以从不同的角度来划分:若从数据元素的值在使用时具有不可分割的性质或者是它可以由更基本的成份组成这个角度来划分,数据结构可以分成简单类型和构造类型两大类;如果从数据所占据的内存空间在程序执行期间是否发生变化这个角度来划分,数据结构又可以分成静态结构和动态结构两大类;如果从数据结点后继关系的多少和是否具有层次性的角度划分,数据结构还可以分成线性结构和非线性结构两大类。 简单类型 整型、实型、字符型、布尔型 静态数据类型 构造类型 数组、记录、集合、字符串 文件、指针 动态数据的类型 线性结构 数组、栈、队列、链表、串 非线性结构 树、图 通常高级程序设计语言都提供了各种简单类型和静态构造类型的数据结构。例如PASCAL就提供了12种类型的定义。这12种类型中除了文件和指针属于动态结构的构造类型外,其余10种均属于简单类型和静态构造类型。在上表的数据结构中,像数组、栈、串和队列等数据结构属于线性数据结构,而树和图属于非线性数据结构。线性数据结构易于表示各结点之间的联系,其存储方式相对简单;非线性数据结构往往能比较形象地反映各结点之间的层次关系。无论是线性结构或非线性结构,若采用数组方式存储,则属于静态数据类型;若采用指针类型存储,则属于动态数据类型。考虑到篇幅限制和读者大多具备pascal语言或c语言的基础,本书侧重讲解线性结构和非线性结构两种。 数据结构和算法有着密切的联系,简洁有效的算法很大程度上出自于对数据结构的正确选取。奥林匹克信息学竞赛的试题大都属于非数值计算问题,从问题中抽象出的数据多半是结构类型的,因此,对于参与这项活动的学生来说,学好、用好数据结构尤为重要。为此。我们在本书中详尽地介绍了数据结构的有关概念和基本操作,同时辅之于一些实例,围绕编程实际展开讨论,尽可能多给读者一点启示。 第一章 顺序存储结构的线性表 线性表是最常用且比较简单的一种数据结构,它是由有限个数据元素组成的有序集合,每个数据元素有一个数据项或者含多个数据项。例如26个英文字母表(A,B,……,Z)是一个线性表,表中每一个数据元素由单个字母组成数据项。又如(图1—1)也是一个线性表,表中含8个数据元素,每一个数据元素由n个选手在该项目的竞赛成绩组成。 学生 项目 学生1 …… 学生j …… 学生n 项目总分 项目1 …… 项目i xij …… 项目8 选手总分sum Sum xj= (图1—1) 线性表具有如下结构特征: 均匀性:即同一线性表的各数据元素的数据类型一致且数据项数相同; 有序性:表中数据元素之间的相对位置是线性的,即存在唯一的“第一个”和“最后一个”数据元素。除第一个和最后一个外,其它元素前面均只有一个数据元素(直接前趋)和后面均只有一个数据元素(直接后继)。 按照表中数据元素的存储方式分顺序存储结构和链式存储结构二类线性表。顺序存储结构是指用一组地址连续的存贮单元依次存储线性表的元素,通常用数组实现;而在链式存储结构的线性表中,逻辑上相邻的两元素,其物理位置不要求相邻。其实现既可采用静态数组,亦可采用动态指针。为了扩大用户空间和更多地体现链式存储结构的便利,实践中大都采用动态链表形式。为此,本书在讲解顺序存储结构的线性表时采用数组类型,在讲解链式存储结构的线性表采用指针类型。另外,根据存取方式的限制和表元素类型的限制,还存在几种特殊类型的线性表:栈、队列、串,它们一般采用顺序存储结构 §1.var A:array[cd] of atype; B:array[c1d1,c2‥d2] of btype; d-c+1),元素类型为atype;B为二维数组,表长为(d1-c1)*

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档