《数据结构》课程的知识体系浅析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表 1 “三点一线”知识体系参照表
逻辑结构
物理结构
主要算法
线性表
顺序表 链表 ( 单链表 , 双链表 , 循 环链表)
构造结构 ,插入元素 , 删除元 素 , 合 并 , 查 找 ,排序
顺序栈 栈
链栈
构造结构 ,入栈 ,出栈
队列
顺序队列 (循环队列) 链队列
三元组顺序表 ( 逻辑链接 稀疏矩阵 的顺序表)
关键词 :数据结构 ;逻辑结构 ;物理结构 ;算法 中图分类号 : TP311. 12 文献标识码 :A 文章编号 :1008 - 1666 (2004) 02 - 0044 - 03
On the Kno wledge System in the Course of Dat a St r uct ure
十字链表
构造结构 ,出队 ,入队 构造结构 ,转置
广义表
无 头尾链表存储 , 扩展线性 链表存储
构造结构 ,求广义表 的深度 ,复制广义表
无
树
双亲表示法 ,孩子表示法 , 构造结构 ,遍历
孩子兄弟表示法
二叉树 图
顺序存储二叉树 二叉链表 、三叉链表 ,线索 二叉树 邻接矩阵
邻接表 ,十字链表
构造结构 ,遍历 ,线索 化 造结构 ,遍历 ,拓扑排 序 ,关键路径 ,最短路 径
2. 2 存储结构是关键 存储结构即物理结构 ,是逻辑结构在计算机中实实在 在的表示 ,包括数据的表示和数据之间所有逻辑关系的表 示 。对于物理结构 ,我们主要从以下三个方面来学习 : 1) 逻辑结构与物理结构的映象关系 。在对逻辑结构 的特点和各种逻辑关系都十分熟悉以后 ,进一步就是要学 习逻辑结构所对应的物理存储结构 。一般来说 ,每一种逻 辑结构所对应的存储结构都有两大类 :顺序存储结构和链 式存储结构 ,这是因为在计算机存储器中可以用内存单元 的相邻关系和地址间的指向关系来表示逻辑结构中的序 关系 。对于顺序存储结构 ,主要是用物理上相邻的存储单 元来存储逻辑上相邻的数据元素 ; 而链式存储正好相反 , 逻辑上相邻的数据元素在内存中不一定相邻 ,但逻辑上相 邻的元素之间有地址映象关系 。一个数据元素有相邻关 系的元素越多 ,其链式结构就越复杂 ,链中的结点的指针 域也越多 。例如 :二叉树的二叉链表中的结点存储了左右 孩子的地址 ,但如果要再存储该结点的双亲结点的话 ,就 必须要用到三叉链表了 。 2) 物理结构的语言描述 (定义) 。在理解了物理结构
数据及其关系来源 —→ 逻辑结构 —→ 物理结构 —→ 算法实现
(现实世界)
(信息世界) (机器世界) 图 1 三点一线结构图
(目标)
1 数据及其关系 在不同阶段的表示形式
数据首先是现实世界的直接产物 ,是不以人的意志为 转移而客观存在的 ,通常它反映了物质的质和量等方面的 信息 。当我们用计算机来加工处理这些数据时 ,数据要经 过从现实世界中的原始数据到计算机中的机器数据的逐 步转变过程 ,一般来说 ,要经历如下三个阶段 :
素个数等等 ,全部放到描述整个结构的结构体中 ,完成对 意义的常用算法或经典算法 。不管是哪种算法 ,我们都要
物理结构的语言描述 。
学会其算法思想 ,并能初步进行最坏情形下的时间复杂度
3) 物理结构上的算法 。所谓算法 ,就是一步一步解决 分析 ,对于简单的算法 ,还要求能求出其平均时间复杂度 。
问题的办法 。现实生活中的问题千姿百态 ,解决问题的办 法也数不胜数 ,即使对于一个固定的数据结构 ,其上可以
用适当的形式将这些数据和关系描述成程序的处理对象 。 构决定算法操作 ,有什么样的结构才会有什么样的操作 。
然后再编写处理这些对象的程序 ──这正是我们的最终 例如栈是一种运算受限的线性表 ,它的逻辑结构特性是先
目标 。怎样定义数据的物理结构呢 ? 显然 ,物理结构由数 进后出 ,所以它的插入和删除运算就和一般意义上的线性
Keywords :data structure ;logic structure ; p hysic structure ; algorit hm
“数据结构”课程自从 1968 年设立以来[1 ] ,一直是计 算机软件和计算机应用专业的核心专业课程 ,也是其他相 近的理工科专业的主要选修课程之一 。它是一门研究非 数值计算的程序设计问题中计算机的操作对象以及它们 之间的关系和操作的学科 ,因为数据结构介于数学 、计算 机硬件和计算机软件三者之间 ,所以它不仅是一般程序设 计 (特别是非数值计算的程序设计) 的基础 ,而且是设计和 实现编译程序 、操作系统 、数据库系统及其它系统程序和 大型应用程序的重要基础 。本文以清华大学出版的《数据 结构》教材为主要参考 ,从贯穿教材始终的三个基本知识 点和一条线索出发 ,初步分析怎样从“三点一线”(见图 1) 的整体高度来学习数据结构课程所包含的知识内容 (见下 页表 1) 。
式结构 。在采用语言描述物理结构时 ,我们往往采用结构 从逻辑结构到物理结构再到算法的过程进行学习 ,而对第
体的形式 ,将数据主体 ,存储空间 ,还有一些描述整体结构 二类算法 ,要针对不同的数据结构和不同的算法思想来学
的特征数据量 ,例如线性表的总长度 ,稀疏矩阵中非零元 习每种算法的具体实现 ,一般说来 ,这些算法是具有典型
第 2004
2期 年4
月
J o ur nal
娄 of
底师 Lo udi
专学报 Teachers
College
No. 2 Apr. ,2004
《数据结构》课程的知识体系浅析
佘立部
(娄底师范高等专科学校计算机系 ,湖南 娄底 417000)
摘 要 :从逻辑结构 ,物理结构 ,算法实现三个基本知识点和数据在不同阶段的存在形式这一线索出发 ,分析了数据 结构课程所包含的主要知识内容 ,以指导学生从“三点一线”出发来学习数据结构课程知识 。
收稿日期 :2004 - 03 - 02. 作者简介 :佘立部 (1975 - ) ,男 ,湖南双峰人 ,娄底师范高等专科学校计算机系工程师 。
总第 77
期
佘立部《: 数据结构 》课 程的知识体系浅析
45
其联系的表示不是一步到位直接存到计算机中的 ,而是先 对数据及其联系进行初步抽象和整理 ,将数据及其关系用 符号或图形表示出来 ,这就是数据的逻辑结构 。
系 ,如果是顺序存储 ,就开辟一段连续的内存单元给数据 构造算法 ,线性表的插入与删除算法 ,树与图的遍历算法
元素 ,如果是链式 ,其关系要素在结点中已有定义 ,但结构 等等 ;另一类是可用于多种结构的在实际应用中大量使用
还需要采用逐渐增加元素的方法建立 ,最终构成完整的链 的算法 ,例如查找与排序 。对于第一类算法 ,可严格按照
1. 1 现实世界中的数据 简单地说 ,数据是对客观事物的符号表示 ,在计算机 科学中是指所有能输入到计算机中并被计算机程序处理 的符号的总称[1 ] ,是计算机加工的原料 ,可以是数值也可 以是各种符号标识 。就数据本身来说 ,是脱离计算机而客 观存在的 ,是现实世界[3 ]中的直接产物 ,即第一存在形式 。 例如历年的国民生产总值 、学生高考成绩 、每位公民的姓 名等等 ,它与计算机并没有什么必然联系 ,现在的问题是 要用计算机来处理和加工这些客观存在的数据 ,那么就势 必要解决这些数据在计算机中的表示问题 ,不但要表示数 据本身 ,而且要表示这些数据之间的联系 。通常对数据及
1. 2 信息世界中的数据 数据的逻辑结构是对数据及数据之间关系的第一层 抽象 ,通常用某些数学式子或图形符号来表示数据和数据 之间的联系 。反过来 ,这种图形结构反映了一定的数据信 息 ,存在于人们头脑之中 ,我们称这时的数据进入了第二 存在阶段 ─—信息世界[3 ] ,此时的数据仍然是脱离计算机 的 ,与第一阶段不同的是 : 此时的数据已经进行了有机地 组合 ,不但数据本身进行了抽象表示 ,而且数据之间的联 系也表示出来了 。一般说来 ,这时的数据可能是用一些抽 象的符号或标识代替 ,例如线性表和树中的结点 ,数组中 的元素 ,图中的顶点等等 。在有了这样的抽象表示以后 , 接下来的事情就是将这些数据及其联系存到计算机的存 储器中 ,形成数据的存储结构 。 1. 3 机器世界中的数据 存储结构也叫物理结构 ,是数据在计算机中实实在在 的存放形式[1 ] 是数据的第三存在阶段 ─—机器世界 。这 时的数据已经是一个个具体的数值数据或符号数据 ,而不 是抽象表示了 ,当然更深一步的理解是一串串二进制代码 或高低电平 ,存在于计算机的存储部件中 。从高级语言的 角度来看 ,这时的数据才是真正直接被计算机 (程序) 处理
3 结束语
施加的运算也是一个无限的集合 ,所以要学遍所有的算法 以上阐述了沿着数据及其关系的不断抽象过程来学
是不可能的 。但是 ,对于任何一种数据结构 ,都有一个基 习数据结构及其算法的方法 。由于该课程专业性很强 ,除
据组成 ,所以先从单个数据元素入手 。先定义数据元素的 表不同 ,只能在端点处操作 ,称为入栈和出栈操作 。
wk.baidu.com
类型 ,是简单类型还是结构类型 ,结构类型中又包括哪些
在《数据结构》教材中提到的算法 ,主要有两大类 : 一
简单成员变量 ,在定义好单个数据元素以后 ,接着定义关 类是建立在特定的某种数据结构之上的 ,例如各种结构的
46 娄 底 师 专 学 报 总第 77 期
的存储特征以后 ,我们应该开始考虑其语言描述了 。因为 是在于对结构特征的理解 ,包括逻辑结构和物理结构 。逻
我们要利用计算机程序来处理这些数据和关系 ,所以必须 辑结构是基础 ,物理结构是关键 ,在某种意义讲 ,是数据结
的数据 。
2 逻辑结构 、存储结构和算法 构成《数据结构》课程的全部内容
2. 1 逻辑结构是基础 将要处理的数据及其关系抽象成用图形和文字描述
的数学模型 ,这就是逻辑结构 。数据的逻辑结构主要是描 述数据之间的逻辑关系 ,而不只是数据本身 。之所以称为 逻辑结构 ,是因为它仍然是独立于计算机而客观存在的 。 在逻辑结构中 ,我们主要学习每种结构的整体特征和结构 内部的各数据元素之间的逻辑关系 。首先是最简单的直 接逻辑关系 ,主要有两种 : 有序相邻和无序相邻 。例如线 性表中的直接前驱和直接后继的关系 ,树中的双亲和孩子 的关系 ,图中的邻接关系等等 。其次是间接的关系 ,例如 线性表中的前驱和后继的关系 ,树结构中的祖先和子孙的 关系 ,图中的连通子图等等 。越是复杂的逻辑结构 ,其关 系种类越多 ,既有简单的直接关系 ,也有复杂的间接关系 。 根据与同一元素有直接相邻关系的元素的个数 ,可以将逻 辑结构分为两大类 :线性结构与非线性结构 。线性结构主 要有 :线性表 ,栈和队列 ; 非线性结构主要有多维数组 ,广 义表 ,树 ,二叉树和图 。在学习每一种逻辑结构时 ,首先要 理解描述这种结构的基本概念 ,找出数据之间的各种关 系 ,然后再学习该结构上的算法 ,即基本操作 。因为数据 的运算是定义在数据的逻辑结构之上的 ,每一种逻辑结构 都有一个运算的集合 ,所以在对逻辑结构有了全面清晰的 认识之后 ,就应该考虑这些算法的逻辑实现过程 ,这时的 算法我们不妨称为逻辑算法 ,因为还不是在计算机中直接 实现的 。
S H E L i2bu
(Department of Computer Science , Loudi Teachers College , Loudi ,417000 ,China)
Abstract : In t he paper , t he aut hor analyzes t he main contents of Data S t ruct ure from logic structure , p hysic structure and algorit hm and t he existing form of data in different p hases , aiming to direct t he students to learn t he course well.