ADT、C和Java

第5章,数据抽象使得用户程序员在编写客户程序时,摆脱该数据类型的实现细节而仅仅关心该数据类型的接口。在计算机科学中,有一些重要的数据抽象——数据结构,应该尽早地介绍。计算机科学研究的数据结构主要有线性表、栈、队列、集合、图、树等等。

这里先谈谈《数据结构》课程与实现语言的事。

《数据结构(C语言版)》严蔚敏、吴伟民是经典教材,作者在前言中清楚的说明:

“全书中采用类C语言作为数据结构和算法的描述语言,在对数据的存储结构和算法进行描述时,尽量考虑C语言的特色,如利用数组的动态分配实现顺序存储结构等。虽然C语言不是抽象数据类型的理想描述工具,但鉴于目前和近一两年内(注:版次1997.4),“面向对象程序设计”并非数据结构的先修课程,故本书未直接采用类和对象等设施,而是从C
语言中精选了一个核心子集,并增添C++语言的引用调用参数传递方式等,构成了一个类C描述语言。它使本书对各种抽象数据类型的定义和实现简明清晰,既不拘泥于C语言的细节, 又容易转换成能上机执行的C或C++程序。  ”

真的很奇怪为什么直到现在还有很多人用C语言版数据结构。虽然《数据结构(C语言版)》很容易转换成能上机执行的C或C++程序,管你容易不容易,知道什么叫工具吗?越方便越好。如果Java、C#比C方便,就应该选Java/C#。这里也不是锻炼抽象思维的场所?学习高等数学、离散数学不够的话,可以旁听数学系的课。

其实yqj2065想说的是:从学习面向对象的角度,数据结构是一个很好的练习场,比GUI更好。这也是我将它们放在【第5章链表、数组和栈】的原因。注意,《编程导论》不是《数据结构》课程,所以仅介绍链表(linked list)数组(array)和栈,将它们作为熟悉分支循环、面向对象的练习场。

在《数据结构》课程中,抽象数据类型(Abstract Data Type、ADT)是一个重要的概念。而在这里它是一个可选的术语。

为数据结构建模的ADT,描述的内容包括:(1)数据元素的集合、(2)元素之间的关系和(3)该ADT拥有的操作。我们分而治之

(3)使用某个Java接口I描述该ADT拥有的操作,

(2)用一个数据类型X(通常是结点)描述该ADT的数据元素并以X的对象之间的关系描述元素之间的关系。

(3)以接口的实现类管理元素的集合。

随便说一下,“抽象数据类型——一个数学模型以及定义在该模型上的一组操作”,这不是为何抽象数据类型的答案,而是数据类型。

ADT是为某一种类的具有相同行为的数据结构建立的数学模型——例如栈应该具有压入和弹出的行为,或者为具有相似语义的多种编程语言的某一数据类型建立的数学模型——例如各种语言中都有整数这一数据类型。

元素之间的关系是重点,关系通常以序偶来描述。如栈顶元素被最先弹出,这种关系反映在实现代码中;而链表元素之间的关系比较直观,由next设置。

使用Java学习数据结构,只需要3个基本武器:结点、数组和String。

时间: 2024-08-10 19:18:13

ADT、C和Java的相关文章

java设计模式--基础思想总结1

看设计模式的相关书籍也有一段时间了,一开始其实是抱着作为java三大框架的基础知识储备来学习的,不过到后来,才发现,在设计模式的一些准则装饰下,java的面向对象威力才真正地体现出来,后面的将会陆续地总结设计模式学习过程中的一些心得体会,这篇作是个人理解设计模式中的一些核心思想的简单总结,但是也是我认为在设计模式中最核心的部分思想了. 一.软件工程的设计尝试 软件工程的一些要求.在软件工程中,最基本的要求便是可重用行以及扩展性,前者要求系统的设计在代码层面可以有良好的组织结构以便公共代码可以一次

Cocos2d-x3.1通过JniHelper调用Java类中静态函数

1.创建Cocos2d-x工程 (1)cd /Users/自己用户名/Desktop/cocos2d-x-3.1/tools/cocos2d-console/bin (2)cocos new JniDemo -p com.pactera.jni -l cpp -d 自己的工程路径 2.将新建工程的proj.android导入ADT (1)FILE->Import->Android->Existing Android Code Into Workspace (2)next->Brow

java实现的LinkedLilst

package javabean.adt.List; import java.util.ConcurrentModificationException; import java.util.Iterator; import java.util.ListIterator; import java.util.NoSuchElementException; /** * 模拟 双链表 * 类本身 包含着 到两端的链.表的大小以及一些方法, * 2:Node类,他可能是一个私有的嵌套类,一个节点包含数据以及

四则运算(28日)

今天是冲刺的最后几天了,我们已经完成了界面的设计以及四则运算的基本功能,但在编程的过程中还遇到了一些问题,我们还在努力尝试调试中.在这个软件中,用户可以计算基本的四则运算,由用户输入算式进行计算,我们先提交一个简单的版本,在以后我们还在继续完善. Not CHECKED OUT CHECKED OUT DONE!: SPRINT GOAL: BETA-READY RELEASE 四则运算的界面设计 安装ADT,在Java环境下设计 四则运算的基本功能 对按钮事件的处理  四则运算的错误处理  由

android 搭建开发环境

第一次安装开发环境已经是大二的那一年.当时android刚出2.3,于是就很轻松的撞上了. 现在android已经触到了5,但是还是要装2.3.就很不容易. 需要四个东西 adt eclipse sdk java 先安装java,然后配环境变量.尽可能安装64位,让后eclipse也安装64为.这样不会错. 让后下载adt9.0版本. 通过eclipse install software,把这个离线包安装上. 让后,在浏览一下android sdk的路径. 让后就安装成功了.

学习笔记——数据结构学习指导与习题解答

将下面的ADT转换成Java接口并用一个Java类实现: ADT:Pointamplitude():RealdistanceTo(Point):Realequals(Point):Booleanmagnitude():RealtoString():StringxCoordinate():RealyCoordinate():Real ADT:Linecontains(Point):Booleanequals(Line):BooleanisHorizontal():BooleanisVertical

[Android] 基于 Linux 命令行构建 Android 应用(一):关于 Android 项目

关于 Android 项目 项目是保存源代码和资源文件的容器. 谷歌提供的 Android SDK 工具只能对具有固定目录结构的项目进行编译和打包.因此强烈建议使用 Eclipse + ADT 或者 android 命令创建 Android 项目. 你可以使用 Eclipse + ADT 创建三种项目,它们主要结构相同但功用不同,分别是 Android Projects.Test Projects 和 Library Projects.本文我们主要关注 Android Projects. 一个

Android 开发环境在 Windows7 下的部署安装

Android SDK Android SDK 为 Android 应用的开发.测试和调试提了必要的API库和开发工具. ADT Bundle 下载 如果你是一个android 开发新手,推荐你下载使用 ADT Bundle 以快速开始android 的开发,它提供了必要的 android sdk 组件和一个内置 ADT 的 Eclipse 版本. http://developer.android.com/sdk/index.html#win-bundle With a single downl

不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧

Jerry和SAP成都研究院一些新同事聊天时,谈到ABAP和SAP GUI这个话题.很多新同事在加入SAP成都之前,是做Java和C++开发的,习惯了Eclipse/IntelliJ IDEA/Visual Studio这些现代IDE,对于SAP GUI这个比较"复古"的IDE不太适应. 其实还有一个选择:ABAP Development Tools,最初在SAP内部称为ABAP in Eclipse.这个工具SAP在很多场合简称为ADT,本文后续部分也使用这个简称. 简单地说,SAP

; AutoHotkey全自动安装环境设置和测试JAVA+Eclipas+Android+JRE+JDK+SDK+ADT+Android模拟器+Android Virtual Device Manager+NDK+Studio+Doc+Help+Android Application Project编程调试windows环境[草稿版] DetectHiddenWindows,On SetTitl

; AutoHotkey全自动安装环境设置和测试JAVA+Eclipas+Android+JRE+JDK+SDK+ADT+Android模拟器+Android Virtual Device Manager+NDK+Studio+Doc+Help+Android Application Project编程调试windows环境[草稿版] DetectHiddenWindows,OnSetTitleMatchMode,2 ; 激活窗口并单击按钮IfWinExistActiveControlClick