《编程导论(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。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXFqMjA2NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" style="border:none; max-width:100%">

ADT、C和Java的更多相关文章

  1. 3.2 表 ADT -3.3 Java Collection API 中的表

    3.2 表 ADT 处理形如 A0, A1, A2, --, AN-1 的一般的表.我们称这个表大小为N.将大小为0的特殊表称为空表 对于除空表以外的任何表,称 Ai-1 前驱 Ai,Ai 后继 Ai ...

  2. (二)使用数组长度实现ADT bag(java)

    目录 1.使用固定大小的数组实现ADT bag 包 1.1 一组核心方法 1.2 实现核心方法   1.3 让实现安全 1.4 测试核心方法 1.5 实现更多的方法 1.6 删除项的方法 1.7 测试 ...

  3. ADT上跑java application

    Invalid layout of java.lang.String at value## A fatal error has been detected by the Java Runtime En ...

  4. android在更新ADT以后报java.lang.NoClassDefFound的解决办法

    Android不是很熟.从网上找到了想要的代码后兴高采烈的导入workspace中,直接开Run. but在真机的时候Console.LogCat下都没显示什么有用的东西,就是写NDK编译完Nativ ...

  5. (一)从设计的角度来看ADT(Java)

    <数据结构与抽象——Java语言描述>第一章学习笔记 感想:以前学数据结构关注于方法及实现,为了完成作业和手写代码,没有从设计层面考虑过,第一章设计一个bag ADT,借助于Java in ...

  6. java设计模式--基础思想总结--父类引用操作对象

    看设计模式的相关书籍也有一段时间了,一开始其实是抱着作为java三大框架的基础知识储备来学习的,不过到后来,才发现,在设计模式的一些准则装饰下,java的面向对象威力才真正地体现出来,后面的将会陆续地 ...

  7. 2018-2019-20172329 《Java软件结构与数据结构》第二周学习总结

    2018-2019-20172329 <Java软件结构与数据结构>第二周学习总结 教材学习内容总结 <Java软件结构与数据结构>第三章 集合概述--栈 一.集合 1.我们印 ...

  8. java实现的LinkedLilst

    package javabean.adt.List; import java.util.ConcurrentModificationException; import java.util.Iterat ...

  9. Java实现ArrayList

    说明都在注释: package adt.array; import java.util.Iterator; import java.util.NoSuchElementException; /** * ...

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

    Android SDK Android SDK 为 Android 应用的开发.测试和调试提了必要的API库和开发工具. ADT Bundle 下载 如果你是一个android 开发新手,推荐你下载使 ...

随机推荐

  1. 随时随地日志Debug

    对于一个应用程序而言,Log必不可少,但是有些时候仅仅想看下输出,如果加log的话就显得比较麻烦,这个时候就用到了Debug.WriteLine("测试下,你好,非常棒,牛叉!") ...

  2. ES6 Proxy 性能之我见

    ES6 Proxy 性能之我见 本文翻译自https://thecodebarbarian.com/thoughts-on-es6-proxies-performance Proxy是ES6的一个强力 ...

  3. 无序列表属性 隐藏方式 JS简介

    今天考试了,整理一下错题. 1.无序列表的属性 list-style 分为三小类 (1)list-style-type none:无标记. disc:实心圆(默认). circle:空心圆. squa ...

  4. 移动web开发常见的问题

    1.屏幕旋转的事件和样式 事件 window.orientation,取值:正负90表示横屏模式.0和180表现为竖屏模式: window.onorientationchange = function ...

  5. angular4搭建博客(一)

    本文长期更新,未经运行,严禁转载. 博客(制作中) http://101.200.58.228/ Github https://github.com/Teloi/TEIndex 框架选择 Angula ...

  6. Android Studio ( Linux) 创建模拟器报错

    Linux下Android studio创建模拟器最后一步报错 报错:An error occurred while creating the AVD. See idea.log for detail ...

  7. 关于H5移动端开发 iPhone X适配

    一. 媒体查询. @media screen and (device-width:375px) and (device-height:812px){ #header { height: 88px; p ...

  8. 【Oracle】跟踪文件目录(User_Dump_Dest)生成脚本(11g/9i).txt

    oracle 11g 生成跟踪目录(User_Dump_Dest)脚本: –设置合适显示长度: column trace new_val TRACE format a100 –脚本: select c ...

  9. spring的HandlerMapping

    handerlMapping意思是处理器映射,是把请求的url地址与方法进行映射,如SimpleUrlHandlerMapping.

  10. CorelDRAW X7软件中如何将图片剪贴到文字中

    将 图片剪贴到文字中是平面设计常用的一种处理方法之一,将图片剪贴到文字中是指将图片置入到该文字,且图片的外轮廓是沿着文字的形状剪贴的,这种处理手法被广泛应用于排版设计中.本教程将带大家了解如何用Cor ...