_数据结构_教学与教材研究_张乃孝
西南交通大学考研网-易考网西南交通大学土木工程学院地图制图学与地理信息工程考研试卷列表--Easy考研网(ww
西南交通大学考研网-易考网|西南交通大学土木工程学院地图制图学与地理信息工程考研试卷列表--Easy考研网()-西南交通大学考研试卷专业清单-考研一站式_Easy考研网_考研资料、考研专业课试题、考研专业目录、考研参考书目、考研咨询、考研辅导报名、考研书籍、考研会员服务-- CONTENT GOES HERE (simple)--点此查看购物车/结账请输入学校关键字 请输入科目关键字 考研试卷样题实例: 样题1 样题2 样题3 样题4西南交通大学考研试卷购买西南交通大学考研信息一站式汇总 西南交通大学院系介绍 +More博士研究生招生院系联系人一览表院系介绍西南交通大学老师介绍 +More研究生老师介绍----曾华燊研究生老师介绍----诸昌钤研究生老师介绍----康积涛研究生老师介绍----李建兵西南交通大学招生简章 +More经济管理学院2009年招收在职人员攻读项目管理、工业工程硕士招生简章工商管理硕士(MBA)招生2009年硕士研究生招生参考书目2009年硕士研究生招生专业目录西南交通大学招生问答 +More硕士研究生招生各院系联系人一览表西南交通大学复试信息 +More2009年工商管理硕士(MBA)考生复试的通知2009年MBA调剂信息关于2009年硕士研究生复试的通知2009年一志愿生源校外调剂说明西南交通大学博士招生 +More2009年博士研究生招生分数线2009年博士考试报名须知2009年博士研究生招生参考书目2009年博士研究生招生专业目录西南交通大学文件通知 +More2008年硕士入学考试准考证发放事宜2008年硕士入学考试特殊用具列表2008年硕士研究生入学单独考试英语和政治考试说明2008年硕士研究生招生现场确认的有关通知
数据结构实验指导书
数据结构实验指导书
成都信息工程学院软件工程系
2007年7月
实验1:顺序表实验
一、实验目的
1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表
的一些基本操作和具体的函数定义。
2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集
等运算。
3.掌握对多函数程序的输入、编辑、调试和运行过程。
二、实验要求
1.预习C语言中结构体的定义与基本操作方法。
2.对顺序表的每个基本操作用单独的函数实现。
3.编写完整程序完成下面的实验内容并上机运行。
三、实验内容:
1.编写程序实现顺序表的下列基本操作:
(1) 初始化顺序表La。
(2) 将La置为空表。
(3) 销毁La。
(4) 在La中插入一个新的元素。
(5) 删除La中的某一元素。
(6) 在La中查找某元素,若找到,则返回它在La中第一次出现的位
置,否则返回0。
2.编写程序完成下面的操作:
(1) 构造两个顺序线性表La和Lb,其元素都按值非递减顺序排列。
(2) 实现归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减顺序排列。
(3) 假设两个顺序线性表La和Lb分别表示两个集合A和B,利用
union_Sq操作实现A=A∪B。
四、思考与提高
假设两个顺序线性表La和Lb分别表示两个集合A和B,如何实现A=A ∩B ?
实验2:单链表实验
一、实验目的
1.学会定义单链表的结点类型,实现对单链表的一些基本操作和具体
的函数定义,了解并掌握单链表的类定义以及成员函数的定义与调用。
2.掌握单链表基本操作及两个有序表归并、单链表逆置等操作的实现。
二、实验要求
第1讲 数据结构 绪论
要求:预习 语言,特别是指针部分;至少实现三个算法。 要求:预习c 语言,特别是指针部分;至少实现三个算法。
第1章 绪论
数据结构的概念 算法的概念和描述 算法的简单分析
1.1 从问题到程序
计算机科学研究的重点是信息在计算机中的 表示 和 处理问题
数据结构
算 法
4
电子计算机的主要用途
早期:主要用于数值计算 后来:非数值计算领域 (能处理多种复杂的具有一定结构关系的数据)
什么是数据结构? 什么是数据结构? 是计算机中表示的、具有一定逻辑关系和行 为特征的一组数据。 数据结构三个方面的问题
数据的逻辑结构 数据的存储结构 对各种数据结构进行的运算
目的: 目的:提高数据处理的效率
提高数据处理的速度 尽量节省计算机存储空间
13
数据的逻辑结构有两个要素
数据元素的集合D 反映D中各数据元素之间的前后件关系S。 数据结构可以表示成 B=(D,S) 其中B表示数据结构。
三、算法的描述和实现
可采用自然语言、 描述 可采用自然语言、数学语言或约定 的符号语言。 的符号语言。 实现 必须借助程序设计语言提供的数据 类型及其运算。 类型及其运算 采用类C语言 语言。 本课的描述 采用类 语言
四、算法效率的度量 算法分析是对算法质量优劣的评价 算法分析是对算法质量优劣的评价
首先,算法必须是“正确” 首先,算法必须是“正确”的 (1)执行算法所耗费的时间(效率要高 时间复杂度) 执行算法所耗费的时间( 时间复杂度) 执行算法所耗费的时间 效率要高,时间复杂度 (2)执行算法所耗费的存储空间( 主要考虑辅存空间 ; 执行算法所耗费的存储空间( 主要考虑辅存空间; 执行算法所耗费的存储空间 低存储要求,空间复杂度 空间复杂度) 低存储要求 空间复杂度) (3)算法的可读性、 易维护性要好 ( 易于理解 , 易于编 算法的可读性、易维护性要好(易于理解, 算法的可读性 易于调试) 码,易于调试) (4)健壮性, 即当输入一些非法数据时 , 算法也应做出 健壮性,即当输入一些非法数据时, 健壮性 适当的反应或进行处理。 适当的反应或进行处理。
北大考研数学参考书
《数学分析中的典型问题与解题方法》(第二版。裴礼文)数学学院(参考书,仅作参考,感谢分享!)数学分析(一、二、三册)方企勤等北京大学出版社 50元 配套习题集 20元数学分析 (上,下册) 陈纪修;於崇华,金路, 高教出版社 49元高等代数(第二版)上册、下册 丘维声, ,高等教育出版社,2002年, 2003年 32.7元丘维声 , 高等代数学习指导书(上册), 清华大学出版社,2005年7月 39元高等代数(第二版), 北京大学数学系几何代数教研室代数小组, 1988年 19.8元解析几何(第二版),丘维声,北京大学出版社,(其中第七章不考)15元解析几何简明教程,吴光磊,田畴,高等教育出版社,2003 9元实变函数论,周民强,北京大学出版社,2001年 16元复变函数教程,方企勤,北京大学出版社 13.5元泛函分析讲义(上册),张恭庆,林源渠,北京大学出版社 11元常微分方程教程,丁同仁,李承治,高等教育出版社 12元常微分方程(第二版),王高雄,周之铭,朱思铭,王寿松,高等教育出版社 15元常微分方程讲义(第二版)叶彦谦,人民教育出版社 数学物理方程讲义(第二版),姜礼尚,陈亚浙,高等教育出版 11元微分几何初步,陈维桓,北京大学出版社。(考其中第1-6章)12元微分几何讲义,王幼宁,刘继志,北京师范大学出版社。抽象代数基础,丘维声, 高等教育出版社, 2003年 12元基础拓扑学讲义,尤承业,北京大学出版社,1997 13.5元概率论引论,汪仁官, 北京大学出版社 12元数理统计学讲义,陈家鼎、孙山泽、李东风编,高等教育出版社,1993 9.4元数值计算方法,关治,陈景良, 清华大学出版社 17.0元数值逼近,蒋尔熊等, 复旦大学出版社 12元数值逼近 王仁宏,高教出版社 23.6元数值线性代数,徐树方,高立,张平文,北京大学出版社,2000 13元Introduction to Matrix Computation,G. W. Stewart, Academic Press, New York, 1973.信号数字处理的数学原理(第二版),程乾生,石油工业出版社。数字信号处理,奥米海姆 R.W.谢费,科学出版社,1980 48元离散数学教程,屈婉铃等,北京大学出版社,2002 49元《算法与数据结构——C语言描述》张乃孝主编 高等教育出版社 2002 23元《数据结构—C++与面向对象程序设计》张乃孝 裘宗燕 高教出版社 1998 《数据结构》(C语言版),严蔚敏 吴伟民,清华大学出版社 1996 32元《从问题到程序》裘宗燕,机械工业出版社,2005 36元《C++ 程序设计语言》B. Stroustrup,中译本:机械工业出版社,2002 85元
600份计算相关专业课程习题答案电子版合集
600份计算机类课程习题答案电子版合集
(共40页,myth920)
C程序设计第三版(谭浩强著) 清华大学出版社课后答案
/bbs/viewthread.php?tid=80&fromuid=9
复变函数与积分变换第四版(张元林西安交大著) 高等教育出版社课后答案
/bbs/viewthread.php?tid=612&fromuid=9
C语言程序设计教程第三版(谭浩强张基温著) 高等教育出版社课后答案[khdaw_lxywyl] /bbs/viewthread.php?tid=79&fromuid=9
C语言程序设计教程第二版(谭浩强张基温著) 高等教育出版社课后答案【khdaw】/bbs/viewthread.php?tid=256&fromuid=9
离散数学(第三版)(耿素云屈婉玲张立昂著) 清华大学出版社课后答案【khdaw_ricardo】/bbs/viewthread.php?tid=293&fromuid=9
耿国华数据结构课后答案
/bbs/viewthread.php?tid=103&fromuid=9
严蔚敏《数据结构(c语言版)习题集》答案
/bbs/viewthread.php?tid=102&fromuid=9
谭浩强C++程序设计习题答案
/bbs/viewthread.php?tid=420&fromuid=9
《微机原理与接口技术》清华(冯博琴吴宁)版课后答案
/bbs/viewthread.php?tid=707&fromuid=9
数据库系统概论(王珊萨师煊著) 清华大学出版社课后答案
《数据结构》教案(精华版)
学习必备欢迎下载
课程简介
人们在运用程序设计语言编写程序的过程中发现所有的数据都可以抽象为三种结构,而
对这些数据的所有操作都可以转化为对这三种数据的几种基本操作,而大多数的程序设计技
巧都可以抽象为一些最基本的算法。于是人们逐步发展了一门称为数据结构(或数据结构与
算法)的计算机科学,它广泛应用于计算机领域。
数据结构是信息与计算专业的核心基础课程之一。数据是计算机处理的对象,本课程研
究的数据是非数值性、结构性的数据。学习本课程要求掌握各种主要数据结构的特点、计算
机内的表示方法,以及处理数据的算法,对于算法所花费的时间和空间代价的分析也要求有
一定程度的了解和掌握。通过本课程的学习,使学生透彻地理解各种数据对象的特点,学会
数据的组织方法和实现方法,并进一步培养基本的良好的程序设计能力。本课程主要包括如
下三个方面的内容:
1.基本数据结构:线性表、栈、队列、串、数组和广义表,掌握它们的特点、表示和
实现,对静态结构要求非常熟练的编程上机实现,对动态结构要求逐步熟悉链表的表示,通
过模仿实验教程中的例子,掌握编程技巧。强调类 C 语言的书写规范,特别注意参数的区别,输入输出的方式和错误处理方式,以及抽象数据类型的表示和实现。能熟练完成以下的应用:多项式的计算、语法检查、回朔算法、递归算法、表达式求值、离散事件模拟、文字的编辑
和稀疏矩阵进行矩阵运算采用的处理方法。
2.复杂数据结构:树、二叉树、图。掌握它们的定义和特点、表示和实现,特别注意
与基本数据结构的区别,掌握各种遍历的递归和非递归算法,能熟练完成以下的应用:最优
算法与数据结构 张乃孝 前三章习题课
linklist creater( ) { char ch; linklist head; listnode *p,*r; //(, *head;) head=NULL;r=NULL; while((ch=getchar( )!=‵\n′){ p=(listnode *)malloc(sizeof(listnode)); p–>data=ch; if(head==NULL) { head=p; r=head;} else
C 9. 非空的循环单链表head的尾结点(由p所指向)满足____。 A. p->next= =NULL B. p= =NULL C. p->next= =head D. p= =head 10. 在双向循环链表的p所指结点之后插入s所指结点的操作是 D ____。 A. p->right=s; s->left=p; p->right->left=s; s->right=p->right; B. p->right=s; p->right->left=s; s->left=p; s->right=p->right; C. s->left=p; s->right=p->right; p->right=s; p->right->left=s; D. s->left=p; s->right=p->right; p->right->left=s; p->right=s; 11. 在一个单链表中,已知q所指结点是p所指结点的前驱结点, C 若在q和p之间插入s结点,则执行____。 A. s->next=p->next; p->next=s; B. p->next=s->next; s>next=p; C. q->next=s; s->next=p; D. p->next=s; s->next=q;
数据结构课程的知识体系和教学实践
数据结构课程的知识体系和教学实践
第一篇:数据结构课程的知识体系和教学实践
数据结构课程的知识体系和教学实践--张铭许卓群杨冬青唐世渭
一、数据结构知识体系
计算机科学已经深入应用到各个领域,不仅有效地解决了各种工程和科学计算中的数值计算问题,而且也有效地解决了许多文本处理、信息检索、数据库管理、图像识别、人工智能等非数值的数据处理问题。数据结构有助于程序员更有效地组织数据、设计高效的算法、完成高质量的程序以满足错综复杂的实际需要。
数据结构是计算机学科的重要分支研究领域。数据结构和算法在计算机学科中的地位十分重要,其他计算机科学领域及有关的应用软件都要使用到各种数据结构。数据结构是算法分析与设计、操作系统、软件工程、数据库概论、编译技术、计算机图形学、人机交互等专业基础课和专业课程的先行课程。语言编译要使用栈、散列表及语法树;操作系统中用队列、存储管理表及目录树等;数据库系统运用线性表,多链表及索引树等进行数据管理;而在人工智能领域,依求解问题性质的差异将涉及到各种不同的数据结构,如广义表,集合、搜索树及各种有向图等等。
美国IEEE和ACM的教学计划CC2001把《算法与数据结构》列入计算机以及信息技术相关学科专业的本科必修基础课程。在我国,《数据结构》已经作为理工科非计算机专业必修的信息技术基础课程之一。世界上许多科技人员对学习、研究数据结构都非常重视,对于从事计算机科学及其应用的科技工作者来说,数据结构更是必须透彻地掌握的重要基础。
1.数据的逻辑结构、存储结构和运算
从字面上来看,数据结构就是指数据间的相互关系。具体到计算机环境,谈到任何一种结构时,都自然地联系着作用在这种类型的数据上的运算(即函数),为了在计算机上执行这些运算,我们有必要
信息技术导论简介
A n y
Questions?
Biblioteka Baidu
WELCOME YOU TO SELECT THIS SUBJECT
T H A N K S
《信息技术导论》 课程简介
沈晴霓 北京大学 软件与微电子学院
OBJECTIVES 课程目标
本课程以信息的获取、存储、处理、传输、组织、管理、发布和利用为 主线介绍信息技术的全貌,为学生系统和全面地了解和掌握信息技术领 域的知识体系、技术和方法奠定坚实的基础。特定的目标包括: 理解信息、信息科学与信息技术,以及计算与计算科学的概念
(美)RossA.Malaga. 《信息技术基础》(英文版).电子工业出版社. 2006 (美)Ralph M.Stair George W.Reynolds. 张靖,刘鹏等译. 《信息系统原 理》.机械工业出版社.2005 聂荣胜. 《计算机科学导论——思想与方法》. 高等教育出版社. 2007 张乃孝. 《算法与数据结构---C语言描述》. 高等教育出版社. 2006 王立福等. 《软件工程. 北京大学出版社》. 2006 (美)Matt Bishop, 王立斌等译. 《计算机安全学——安全的艺术与科学》. 电子工业出版社. 2005
60%,期末笔试(开卷)
REFERENCES
参考书目
主教材:
鄂大伟,王兆明. 信息技术导论(第2版). 高等教育出版社.2007.12
大学教材课后题答案网站
大学教材部分答案参考网站 (供大家学习)
1、C 程序设计第三版 (谭浩强著) 清华大学出版社课后答案
/bbs/viewthread.php?tid=80&fromuid=9
2、复变函数与积分变换第四版 (张元林西安交大著) 高等教育出版社课后答案
/bbs/viewthread.php?tid=612&fromuid=9
C 语言程序设计教程第三版(谭浩强张基温著) 高等教育出版社课后答案[khdaw_lxywyl]
/bbs/viewthread.php?tid=79&fromuid=9
C 语言程序设计教程第二版 (谭浩强张基温著) 高等教育出版社课后答案【khdaw】/bbs/viewthread.php?tid=256&fromuid=9
离散数学(第三版)(耿素云屈婉玲张立昂著) 清华大学出版社课后答案【khdaw_ricardo】
/bbs/viewthread.php?tid=293&fromuid=9
耿国华数据结构课后答案
/bbs/viewthread.php?tid=103&fromuid=9
严蔚敏《数据结构(c 语言版)习题集》答案
/bbs/viewthread.php?tid=102&fromuid=9
谭浩强C++程序设计习题答案
/bbs/viewthread.php?tid=420&fromuid=9
《微机原理与接口技术》清华(冯博琴吴宁)版课后答案
/bbs/viewthread.php?tid=707&fromuid=9
数据库系统概论 (王珊萨师煊著) 清华大学出版社课后答案
信息技术导论简介-PKU-SQN-XXXX(1)
CONTENTS 主要内容
知识模块
知识点
1* 信息技术概述
信息,信息科学与信息技术,计算与计算科学
2 信息处理机器-计算机系统 微处理器,存储系统,输入/输出设备,总线及接口标准
3* 计算机软件系统
软件的性质,操作系统分类与工作原理,应用软件类型,程序设 计语言与语言处理程序,软件工程方法与标准
OBJECTIVES 课程目标
本课程以信息的获取、存储、处理、传输、组织、管理、发布和利用为 主线介绍信息技术的全貌,为学生系统和全面地了解和掌握信息技术领 域的知识体系、技术和方法奠定坚实的基础。特定的目标包括:
➢ 理解信息、信息科学与信息技术,以及计算与计算科学的概念
➢ 掌握计算机系统组成原理,以及软件系统,包括系统软件、应用软 件、程序设计语言和软件工程的基本知识
4* 数据的组织结构与算法 5 数据库技术 6* 计算机通信与网络技术
信息表示,数据结构概念,常用数据结构和算法,程序设计方法
数据库的组织与管理,关系数据库原理,下一代数据库技术 数据通信的基本原理,计算机网络组成、分类、拓扑和常用协议 ,因特网、宽带骨干网和接入网基本技术
7* 信息系统与网络安全技术
卿教授在信息安全领域曾获得国家科技进步奖和中国科学院科技进步奖共5次,曾主持40余项国 家级和省部级的重要科研项目,包括国家攻关项目、国务院信息办重点攻关项目、973项目、 863项目、国家自然科学基金项目、中国科学院重大科研项目、中国科学院创新重大项目、国家 保密科研项目、国家密码基金项目等,在国内外著名学术期刊和会议上发表学术论文二百余篇, 出版的代表著作有《密码学与计算机网络安全》、《操作系统安全导论》、《操作系统安全》、 《网络攻防技术原理与实战》和《安全协议》等。
抽象代数基础丘维声答案
抽象代数基础丘维声答案
【篇一:index】
t>------关于模n剩余类环的子环和理想的一般规律
[文章摘要]
通过对模n剩余类的一点思考,总结出模n剩余类环的子环和理想
的规律:所有理想为主理想,可以由n的所有因子作为生成元生成,且这些主理想的个数为n的欧拉数。使我们得以迅速求解其子环和
理想。
[关键字]
模n剩余类环循环群子环主理想
[正文]
模n剩余类是近世代数里研究比较透彻的一种代数结构。
一,定义:
在一个集合a里,固定n(n可以是任何形式),规定a元间的一
个关系r,
arb,当而且只当n|a-b的时候
这里,符号n|a-b表示n能整除a-b。这显然是一个等价关系。这
个等价关系普通叫做模n的同余关系,并且用
a?b(n)
来表示(读成a同余b模n)。
这个等价关系决定了a的一个分类。这样得来的类叫做模n的剩余类。
二,我们规定a的一个代数运算,叫做加法,并用普通表示加法的
符号来表示。我们用[a]来表示a所在的剩余类。规定:
[a]+[b]=[a+b];
[0]+[a]=[a];
[-a]+[a]=[0];
根据群的定义我们知道,对于这个加法来说,a作成一个群。叫做
模n剩余类加群。这样得到的剩余类加群是循环群,并且[1]是其生
成元,[0]是其单位元。
三,我们再规定a的另一个代数运算,叫做乘法,并且规定:
[a][b]=[ab];
根据环的定义我们知道,对于加法和乘法来说,a作成一个环。叫
做模n剩余类环。四,关于理想的定义:
环a的一个非空子集a叫做一个理想子环,简称为理想,假如:
(i) a,b?a?a-b?a;
(ii)a?a,b?a?ba,ab?a;
“数据结构”教学与教材研究
“数据结构”教学与教材研究
摘要:本文回顾了著者三十多年来从事“数据结构”教学与研究的主要经历,重点介绍了对该课程的教材建设方面的主要工作,指出与时俱进、精益求精地编写教材是提高教学水平的基础和关键。
关键词:数据结构;算法;程序设计语言;程序设计方法;教材
一、前言
1946年2月14日,世界上第一台电子数字计算机eniac在美国宾夕法尼亚大学诞生。早期计算机主要用于数值计算,处理的对象是“无结构”的数据(例如整数和浮点数),它们和处理这些数据的程序(根据计算机指令系统编写的代码)都采用二进制表示形式存储在计算机的存储器中。20世纪50年代开始的“程序设计语言”研究,改变了原始的使用机器语言编程的方式,语言的“使用手册”给计算机的使用者提供了一个非常高级的“虚拟机”,使得程序员可以方便快捷地描述需要的数据和处理数据的程序;然后通过语言的“编译器”把它们成功地转换为计算机内部的二进制代码。高级语言的研究成果,打破了计算机只能进行科学计算的限制。“语言编译系统”通过计算机成功地完成从高级语言的模型到计算机硬件语言模型的转换,打开了计算机系统软件研究的大门;同时也提出许多相对比较复杂的结构化数据的需求(例如栈、散列表和二叉树等),促进了数据结构的研究和发展。
“数据结构”的概念最早是由c. a. r. hoare和n. wirth在1966年提出。大量关于程序设计理论的研究表明:为了系统而科学地构造大型复杂的程序,必须对这些程序中所包含的数据结构进行深入的研究。
1968年,美国教授d.e.knuth在他的名著《计算机程序设计技巧》(第1卷基本算法第二章信息结构)中首次系统地研究并整理了当时经常使用的主要数据结构与相关的算法,为数据结构课程的开设提供了丰富的素材(他本人也因此书的成就,在1974年获得计算机界最高科学成就奖“图灵奖”)。
河海大学2020硕士研究生招生考试自命题科目参考范围
2020年硕士研究生招生考试自命题科目参考范围
说明:按照教育部规定,学校不提供考试科目参考书,以下书籍仅供参考。
科目代码科目名称参考范围
003无机化学请参考相应的本科专业通用教材。
008社会保障基金管理《社会保障基金管理新论》殷俊、赵伟著,武汉大学出版社,2006年。
015新闻传播综合业务新闻传播类参考书同初试参考书目。
024政治学原理(2)《政治学概论》(第二版),孙关宏等主编,复旦大学出版社,2008年。
025生态学请参考相应的本科专业通用教材。
047社会工作概论请参考相应的本科专业通用教材,考试范围为相关领域本科阶段专业基础课的基本知识点。
050地球科学概论《地球科学导论》刘本培等编,高等教育出版社,2000。
211翻译硕士英语请参考相应的本科专业通用教材。
243日语(二外)新版《标准日本语》(初级上、下册)人民教育出版社和光村图书株式会社。
245法语(二外)《法语》第一、二、三册的前八课马晓宏等编(92年版),外语教学与研究出版社。
246法语请参考相应的本科专业通用教材。
247德语(二外)《大学德语》(共4册)高教出版社;考研参考范围1、2、3册为主。
331社会工作原理全国MSW考试专业课考试大纲的基础上,参考下列书籍:《社会工作概论》(第二版),李迎生,中国人民大学出版社,2010年;《社会工作理论》,何雪松,上海人民出版社,2007年。
357英语翻译基础请参考相应的本科专业通用教材。
432统计学《统计学》(第五版),贾俊平,中国人民大学出版社,2014。
科目代码科目名称参考范围
河海大学考研参考书
Chap1-算法与数据结构—C语言描述(第2版)张乃孝编课件
模型:图形结构
胜利 1
5
2 7
长利
河源
3
4
4
3 太华
2 桦南
1
发生疫情的五个村子
基本概念和术语
数据(Data):客观事物在计算机中的符号表 示,是能被计算机识别和处理的符号总称。 (数值型、非数值型)
数据元素(Data Element):数据的基本单位, 用于完整地描述一个对象;
数据项(Data Object):组成数据元素的有特 定意义的最小单位 。
长利 4
3 太华
2 1
桦南
发生疫情的五个村子
v
5
1
v 53
3
7
2
24
1
v 42
v
1v
4
3
村子联系网络
穷举法 贪心算法
0 1 2 7 5 1 0 4 4 3 2 4 0 1 2 7 4 1 0 3 5 3 2 3 0
耗时矩阵
数据结构
是一门研究非数值计算的程序设计问题中,计 算机操作的对象以及它们之间的关系和操作的 学科
ADT 抽象数据类型名{ 数据对象:{数据对象定义} 数据关系:{数据关系定义} 基本操作:{基本操作定义}
}ADT 抽象数据类型名
复数抽象数据类型示例
复数抽象数据类型 ADT Complex {
数据对象:D = {c1, c2 | c1, c2 R(R为实数集)} 数据关系:S = {<c1, c2> ( c1为实部,c2为虚部)} 基本操作:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国大学教学 2013年第2期
86 张乃孝,北京大学数学学院教授。
“数据结构”教学与教材研究
张乃孝
摘要:本文回顾了著者三十多年来从事“数据结构”教学与研究的主要经历,重点介绍了对该课程的教材建设方面的主要工作,指出与时俱进、精益求精地编写教材是提高教学水平的基础和关键。
关键词:数据结构;算法;程序设计语言;程序设计方法;教材
一、前言
1946年2月14日,世界上第一台电子数字计算机
ENIAC在美国宾夕法尼亚大学诞生。早期计算机主要用于数值计算,处理的对象是“无结构”的数据(例如整数和浮点数),它们和处理这些数据的程序(根据计算机指令系统编写的代码)都采用二进制表示形式存储在计算机的存储器中。20世纪50年代开始的“程序设计语言”研究,改变了原始的使用机器语言编程的方式,语言的“使用手册”给计算机的使用者提供了一个非常高级的“虚拟机”,使得程序员可以方便快捷地描述需要的数据和处理数据的程序;然后通过语言的“编译器”把它们成功地转换为计算机内部的二进制代码。高级语言的研究成果,打破了计算机只能进行科学计算的限制。“语言编译系统”通过计算机成功地完成从高级语言的模型到计算机硬件语言模型的转换,打开了计算机系统软件研究的大门;同时也提出许多相对比较复杂的结构化数据的需求(例如栈、散列表和二叉树等),促进了数据结构的研究和发展。
“数据结构”的概念最早是由C. A. R. Hoare和N. Wirth 在1966年提出。大量关于程序设计理论的研究表明:为了系统而科学地构造大型复杂的程序,必须对这些程序中所包含的数据结构进行深入的研究。
1968年,美国教授D.E.Knuth在他的名著《计算机程序设计技巧》(第1卷基本算法第二章信息结构)中首次系统地研究并整理了当时经常使用的主要数据结构与相关的算法,为数据结构课程的开设提供了丰富的素材(他本人也因此书的成就,在1974年获得计算机界最高科学成就奖“图灵奖”)。
自20世纪70年代起,“数据结构”在西方国家的大学中,被普遍列为计算机本科的必修课程。
二、不同时期的教材
1978年著者已有10年从事系统软件开发的丰富经验,参加了北京大学计算机系的筹备和创建。在担任数据库教研组组长期间,按系主任张士龙教授的安排,负责“数据结构”等新课的建设。从此围绕数据结构开展的工作,包括学习与研究、讲课与编写教材等,三十多年一直没有停息。其中花费时间和精力最多的是根据教学和科研的需要编写了下面4本教材(以8种不同版本出版)。
1.第一本教材:《数据结构》
1979年教育部在南京大学召开了第一次全国计算机系教学大纲研讨会,著者带着起草的“数据结构教学大纲”和“数据库教学大纲”与系主任一起参加了会议。会上充分肯定了我们的工作,并建议我们分工负责编写数据结构教材。根据这个大纲的修改稿,著者组织教研组内的老师共同编写了第一本《数据结构》讲义。1980年起,这本讲义在校内外(包括南京大学、中山大学等国内著名高校)广泛试用,三易其稿。1987年由高等教育出版社正式出版(此书1992年获国家教委颁发的全国优秀教材奖)。
2.第二本教材:《数据结构基础》
1985年,“北京市自学考试委员会”开设计算机专业。作为数据结构课程的考试委员,著者邀请杨冬青和邵维忠两位老师共同编写了这本自学考试教材。1991年由北京大学出版社出版,第二年台湾儒林出版公司用繁体字出版。
3.第三本教材:《数据结构——C++与面向对象的途径》
20世纪90年代,面向对象的语言和方法开始流行。
根据教学和科研的需要,著者与裘宗燕老师合作编写了该教材。1998年作为国家“九五”重点教材由高等教育出版社出版,2001年出修订版。
4.第四本教材:《算法与数据结构》
1998年,著者由北京大学校长聘任,主持全校理科主干基础课“算法与数据结构”,考虑到不同专业的需要,组织理科教师共同编写了一本适合理科各专业通用的新教材。该书列为“面向21世纪教材”,2002年由高等教育出版社出版,获评“北京市高等教育精品教材”;2006年出第二版,列为“十一五”国家级规划教材,获评教育部“普通高等教育精品教材”;2012年再次修改并附著者教学光盘,出第三版。
回顾三十多年来围绕数据结构教学方面的工作,深深体会到与时俱进、精益求精地编写教材是提高教学水平的基础和关键。
三、数据结构教材需要与时俱进
计算机科学是一门高速发展的新兴科学,它的研究内容和研究方法都在不断发展。“结构”可以解释为:(1)把某些成分(成员、元素、原子等)按一定的规律或方式组织在一起的实体;或(2)把某些成分组织在一起的方式。“数据结构”从字面上可以理解为就是以数据为成员的结构。在早期关于数据结构的论文中,一个数据结构多数情况下是指一个“实体”,而不是指“方式”。用通俗的程序语言的术语来讲,一个数据结构就可以看成一个结构化的数据。然而,计算机科学研究数据结构的目的是为了在计算机中有效地表示和处理客观世界的各种不同对象。所以我们关心的是这些数据结构如何存储在计算机中,并且能有效地完成各种需要的操作。随着计算机科学的发展,对于数据结构的教学与研究也逐步从“实体”,提高到“方式”,直到“抽象数据类型的实现”。
1.教材应该正确反映计算机科学的发展水平
前面提到的第一本教材,基本反映了20世纪70年代的认识水平。当时数据结构的许多概念还十分模糊,即使像“栈”和“队列”这些最基本的结构,它们的操作定义都不完全统一。许多教材对于什么是“数据结构”都没有解释。我们考察了20世纪70年代有影响的几本著作。其中H. A. Maurer用一个二元组B=〈K,R〉来形式地定义一个数据结构B,其中K是结点有限集合,而R是K上的关系的有限集合。C. C. Gotlieb和L. R. Gotlieb则将数据结构的定义扩充成一个五元组:〈V,O,G,M,S〉。其中V是所讨论的结构中成员取值的集合,O是结构中成员可执行的运算的集合,G是两个构成名字的文法,M是结
构中各成员存放位置的集合,S是L(G) M的映射。
根据数据结构研究的目的和应用的需要,我们认为提到一种数据结构离不开以下三个方面:(1)构成数据结构的成员之间固有的逻辑关系;(2)将数据存储在计算机中的表示方法;(3)在计算机中对数据结构进行的运算或处理。将这三方面分别简称为数据的逻辑结构、存储结构和运算,所以在第一本教材中我们明确采用这三者的统一(三位一体)来非形式地定义“数据结构”的概念。
第二本《数据结构基础》以上一本教材内容为基础,根据N. Wirth教授提出的“算法+数据结构=程序”关系,把程序理解为在数据的某些特定的结构和表示的基础上对于算法的描述。算法与数据结构是程序设计中相辅相成、不可分割的两个方面。为了适合于自学考试大纲的要求,参考了A. V. Aho教授20世纪80年代的教材,采用以数据结构为主线、算法为辅线的结构编写,使得内容更加紧凑、重点更加突出。
第三本教材《数据结构——C++与面向对象的途径》是在面向对象的语言和方法开始流行的20世纪90年代,采用面向对象的设计方法讲解数据结构的内容。参考Budd 的工作,由简到繁、从易到难,系统地引入各种抽象数据类型的概念和实现,并在全书最后,用类图方式总结了各种经典的抽象数据类型在教材中的相互关系。
最后一本《算法与数据结构》参考了Kurt Mehlhorn 等人的观点,把“数据结构”定义为“抽象数据类型的物理实现”。提出“物理实现”的意图是强调本课程关心的“实现”应具体到可以用计算机的两个最重要的物理量(主机的运行时间和内存的存储空间)来权衡。这一观点突出了抽象数据类型在数据结构教学中的地位,包含了数据结构与面向对象技术的内在联系。使读者可以从更高的层次理解数据结构与算法的关系,也容易解释数据的逻辑结构、存储结构与运算的三者关系。
后两本教材都反映了20世纪90年代的理解水平。其共同之处是:都强调了数据结构是“抽象数据类型的实现”,前一本使用的是面向对象的实现方法,而后一本为了突出讲解实现的物理效率,没有采用面向对象的方法。
2.教材内容既要相对稳定又要逐步更新
需要指出的是,尽管计算机科学的发展使得数据结构的地位和作用产生了许多变化,但是数据结构学习的目的并没有大的改变。所以教材的内容是基本稳定的。
第一本教材按“逻辑结构、存储结构、运算和应用”四个层次的结构组建架构。全书共18章,除第一章概论外分为四大部分:第一部分是线性结构,包括顺序表、链表与动态存储管理、串、内排序和线性表的检索等五章;第二部分是树形结构,包括树形结构的概念、树形结构的存
87