ADT、C和Java
《编程导论(Java)·5 链表、数组和栈》
数据抽象使得用户程序猿在编写客户程序时,摆脱该数据类型的实现细节而只关心该数据类型的接口。在计算机科学中。有一些重要的数据抽象——数据结构,应该尽早地介绍。
计算机科学研究的数据结构主要有线性表、栈、队列、集合、图、树等等。
《编程导论(Java)》不是专门介绍《数据结构》的课程,所以仅介绍链表(linked list)和数组(array)和栈,将它们作为熟悉分支、循环、面向对象的练习场。同一时候。作为体会OO概念的练习场。
吐槽
这里先谈谈《数据结构》课程与实现语言的事。
《数据结构(C语言版)》严蔚敏、吴伟民是经典教材,作者在前言中清楚的说明:
“全书中採用类C语言作为数据结构和算法的描写叙述语言。在对数据的存储结构和算法进行描写叙述时,尽量考虑C语言的特色。如利用数组的动态分配实现顺序存储结构等。
尽管C语言不是抽象数据类型的理想描写叙述工具,但鉴于眼下和近一两年内(注:版次1997.4),“面向对象程序设计”并不是数据结构的先修课程,故本书未直接採用类和对象等设施。而是从C
语言中精选了一个核心子集。并增添C++语言的引用调用參数传递方式等,构成了一个类C描写叙述语言。
它使本书对各种抽象数据类型的定义和实现简明清晰,既不拘泥于C语言的细节, 又easy转换成能上机运行的C或C++程序。 ”
yqj2065真的非常奇怪,为什么直到如今2015+,还有非常多人用C语言版数据结构。尽管《数据结构(C语言版)》非常easy转换成能上机运行的C或C++程序,管你easy不easy。知道什么叫工具吗?越方便越好。假设Java、C#解说数据结构比C方便,就应该选Java/C#。这里也不是锻炼抽象思维的场所?假设学习高等数学、离散数学不嫌够的话。能够旁听数学系的课。
事实上yqj2065想说的是:从学习面向对象的角度,数据结构是一个非常好的练习场,比GUI更好。这也是我将它们放在《第5章链表、数组和栈》的原因。
ADT
在《数据结构》课程中。抽象数据类型(Abstract Data Type、ADT)是一个重要的概念。而在我们这里它是一个可选的术语。
为数据结构建模的ADT。描写叙述的内容包含:(1)数据元素的集合、(2)元素之间的关系和(3)该ADT拥有的操作。我们分而治之
(3)使用某个Java接口I描写叙述该ADT拥有的操作,
(2)用一个数据类型X(一般是结点)描写叙述该ADT的数据元素并以X的对象之间的关系描写叙述元素之间的关系。
(3)以接口I的实现类管理元素的集合。
随便说一下,“抽象数据类型——一个数学模型以及定义在该模型上的一组操作”,这不是名词解释“什么是抽象数据类型”的答案,而是“数据类型”的答案。
ADT是为某一种类的具有同样行为的数据结构建立的数学模型——比如栈应该具有压入和弹出的行为,或者为具有相似语义的多种编程语言的某一数据类型建立的数学模型——比如各种语言中都有整数这一数据类型。
元素之间的关系是重点,关系通常以序偶来描写叙述。如栈顶元素被最先弹出,这样的关系反映在实现代码中。直接针对链表而言。元素之间的关系比較直观,由next设置。
使用Java学习数据结构,仅仅须要3个基本武器:结点、数组和String。
ADT、C和Java的更多相关文章
- 3.2 表 ADT -3.3 Java Collection API 中的表
3.2 表 ADT 处理形如 A0, A1, A2, --, AN-1 的一般的表.我们称这个表大小为N.将大小为0的特殊表称为空表 对于除空表以外的任何表,称 Ai-1 前驱 Ai,Ai 后继 Ai ...
- (二)使用数组长度实现ADT bag(java)
目录 1.使用固定大小的数组实现ADT bag 包 1.1 一组核心方法 1.2 实现核心方法 1.3 让实现安全 1.4 测试核心方法 1.5 实现更多的方法 1.6 删除项的方法 1.7 测试 ...
- ADT上跑java application
Invalid layout of java.lang.String at value## A fatal error has been detected by the Java Runtime En ...
- android在更新ADT以后报java.lang.NoClassDefFound的解决办法
Android不是很熟.从网上找到了想要的代码后兴高采烈的导入workspace中,直接开Run. but在真机的时候Console.LogCat下都没显示什么有用的东西,就是写NDK编译完Nativ ...
- (一)从设计的角度来看ADT(Java)
<数据结构与抽象——Java语言描述>第一章学习笔记 感想:以前学数据结构关注于方法及实现,为了完成作业和手写代码,没有从设计层面考虑过,第一章设计一个bag ADT,借助于Java in ...
- java设计模式--基础思想总结--父类引用操作对象
看设计模式的相关书籍也有一段时间了,一开始其实是抱着作为java三大框架的基础知识储备来学习的,不过到后来,才发现,在设计模式的一些准则装饰下,java的面向对象威力才真正地体现出来,后面的将会陆续地 ...
- 2018-2019-20172329 《Java软件结构与数据结构》第二周学习总结
2018-2019-20172329 <Java软件结构与数据结构>第二周学习总结 教材学习内容总结 <Java软件结构与数据结构>第三章 集合概述--栈 一.集合 1.我们印 ...
- java实现的LinkedLilst
package javabean.adt.List; import java.util.ConcurrentModificationException; import java.util.Iterat ...
- Java实现ArrayList
说明都在注释: package adt.array; import java.util.Iterator; import java.util.NoSuchElementException; /** * ...
- Android 开发环境在 Windows7 下的部署安装
Android SDK Android SDK 为 Android 应用的开发.测试和调试提了必要的API库和开发工具. ADT Bundle 下载 如果你是一个android 开发新手,推荐你下载使 ...
随机推荐
- 框架-Eureka:初识 Eureka
ylbtech-框架-Eureka:初识 Eureka 1.返回顶部 1. 1.1. http://localhost:2100/ 1.2. 2. Eureka - Last N events 3. ...
- PHP检测输入数据是否合法常用的类(转)
<?php class Fun{ function isEmpty($val) { if (!is_string($val)) return false; //是否是字符串类型 if (empt ...
- if,elif,else的关系 input print int的用法
qian=input("找劳保网是什么网站?:")if qian=="zhaolaobaowang.com": print("正确")els ...
- Core篇——初探IdentityServer4(OpenID Connect模式)
Core篇——初探IdentityServer4(OpenID Connect客户端验证) 目录 1.Oauth2协议授权码模式介绍2.IdentityServer4的OpenID Connect客户 ...
- Git Learning Part I - Install Git and configure it
Why we need 'Git' GIt version control: 1. record the history about updating code and deleting code 2 ...
- js中获取浏览器和屏幕高度
Javascript: IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高 ...
- 获取URL路径参数getUrlParams
function getUrlParams(){ var reg = new RegExp("(^|&)" + name + "=([^&]*)(& ...
- tab选项卡切换(js原生、jQuery )
思路: ① 遍历Tab选项 ② 然后给每个Tab选项绑定点击事件 ③ 每次点击时清除所有Tab选项及Tab选项内容的样式,然后给当前Tab选项添加标记样式,给当前Tab选项添加显示样式 <!DO ...
- ZBrush细说3D海盗角色的创建艺术
一提到海盗,就不由自主想到了<加勒比海盗>,那个帅得一塌糊涂的杰克船长更是让人夜不能寐寝难安,但在艺术的世界里,角色无美丑,今天我们要讲的这位海盗,就与“帅气”八竿子打不着了,它甚至有点古 ...
- Python 3 print 函数用法总结
Python 3 print 函数用法总结 1. 输出字符串和数字 print("runoob") # 输出字符串 runoob print(100) ...