Agenda 大 纲 FIFO data-structures 先 进 先 出 ( FIFO) 数 据 结 构 (= First In First Out) Heap data-structures 堆 结 构 Non-static methods 非 静 态 方 法 (= object metho



Similar documents
第2章 数据类型、常量与变量

《C语言基础入门》课程教学大纲

<433A5C446F63756D656E E E67735C41646D696E F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

I

2 熟 悉 Visual Basic 的 集 成 开 发 环 境 3 了 解 可 视 化 面 向 对 象 编 程 事 件 驱 动 交 互 式 开 发 等 基 本 概 念 4 了 解 Visual Basic 的 特 点 环 境 要 求 与 安 装 方 法 1 Visual Basic 开 发 应 用

类 似 地, 又 可 定 义 变 下 限 的 定 积 分 : ( ). 与 ψ 统 称 为 变 限 积 分. f ( ) d f ( t) dt,, 注 在 变 限 积 分 (1) 与 () 中, 不 可 再 把 积 分 变 量 写 成 的 形 式 ( 例 如 ) 以 免 与 积 分 上 下 限 的



目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

<4D F736F F D C3E6CFF2B6D4CFF3A3A8B5DAC8FDD5C220C0E0CCD8D0D4A3A92E646F63>

修改版-操作手册.doc

第 期 李 伟 等 用 方 法 对 中 国 历 史 气 温 数 据 插 值 可 行 性 讨 论

 编号:

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和

教师上报成绩流程图

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,

国债回购交易业务指引

Microsoft Word - 第7章 图表反转形态.doc

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语

18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类

用节点法和网孔法进行电路分析

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管

一 开 放 性 的 政 策 与 法 规 二 两 岸 共 同 的 文 化 传 承 三 两 岸 高 校 各 自 具 有 专 业 优 势 远 见 杂 志 年 月 日


电信系教学大纲的基本规范

际 联 考 的 非 美 术 类 本 科, 提 前 批 本 科 体 育 类 第 一 批 第 二 批 第 三 批 的 理 工 类 和 文 史 类 本 科 平 行 志 愿, 考 生 可 以 填 报 6 所 院 校 志 愿 符 合 贫 困 地 区 专 项 计 划 和 农 村 考 生 专 项 计 划 报 考

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量

PowerPoint Presentation

<4D F736F F D C4EAB9A4B3CCCBB6CABFCAFDD1A7D7A8D2B5BFCEBFBCCAD4B4F3B8D9D3EBD2AAC7F3>

Cybozu Garoon 3 管理员手册

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以

( ) 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 教 周 2016 年 06 月 13 日 (08:00-09:35) ( )

微软用户

2. 本 次 修 改 后, 投 资 者 申 购 新 股 的 持 有 市 值 要 求 市 值 计 算 规 则 及 证 券 账 户 使 用 的 相 关 规 定 是 否 发 生 了 变 化? 答 : 未 发 生 变 化 投 资 者 申 购 新 股 的 持 有 市 值 是 指, 以 投 资 者 为 单 位

变 量 的 主 要 作 用 是 存 取 数 据 提 供 存 放 信 息 的 容 器 对 于 变 量 必 须 明 确 变 量 的 命 名 变 量 的 类 型 变 量 的 声 明 及 其 变 量 的 作 用 域 JavaScript 是 一 种 弱 类 型 语 言, 也 就 是 说, 在 声 明 变 量

《应用数学Ⅰ》教学大纲


随着执业中医师资格考试制度的不断完善,本着为我校中医学专业认证服务的目的,本文通过对我校中医类毕业生参加2012年和2013年的中医执业医师考试成绩及通过率、掌握率进行分析,并与全国的平均水平进行差异比较分析,以此了解我校执业中医师考试的现状,进而反映我校中医类课程总体教学水平,发现考核知识模块教学中存在的不足,反馈给相关学院和教学管理部门,以此提高教学和管理水平。

目 录 一 激 活 账 号... 2 二 忘 记 密 码 后 如 何 找 回 密 码?... 3 三 如 何 管 理 学 校 信 息 及 球 队 学 生 教 师 等 信 息... 6 四 如 何 发 布 本 校 校 园 文 化? 五 如 何 向 教 师 发 送 通 知? 六

2006年顺德区高中阶段学校招生录取分数线

登录、注册功能的测试用例设计.doc


!!!!!!!!!!

正 规 培 训 达 规 定 标 准 学 时 数, 并 取 得 结 业 证 书 二 级 可 编 程 师 ( 具 备 以 下 条 件 之 一 者 ) (1) 连 续 从 事 本 职 业 工 作 13 年 以 上 (2) 取 得 本 职 业 三 级 职 业 资 格 证 书 后, 连 续 从 事 本 职 业

第二讲 数列

全国教师资格认定管理信息系统

i 1) 系 统 运 作 前 设 定 *1. [2.1 网 页 主 机 名 称 设 定 ] -- 设 定 校 务 系 统 的 主 机 IP 地 址, 以 供 其 他 个 人 电 脑 连 接 及 使 用 该 系 统 *2. [2.3.1 输 入 / 修 改 学 校 资 料 ] -- 输 入 系 统 使

·绪论

课程类 别

云信Linux SSH认证代理用户手册

(Microsoft Word - NCRE\314\345\317\265\265\367\325\37313\324\27221\272\3051.doc)

精 勤 求 学 自 强 不 息 Born to win! 解 析 : 由 极 限 的 保 号 性 知 存 在 U ( a) 当 a 时 f ( ) f ( a) 故 f ( ) 在 点 a 不 取 极 值 f ( ) f ( a) f ( ) f ( a) lim lim a a a a ( a)

<443A5C6D B5C30312EB9A4D7F7CEC4B5B55C30322EBACFCDACCEC4B5B55C C30342EC8CBC9E7CCFC5C31332ECFEEC4BFC5E0D1B55C E30385C322EB2D9D7F7CAD6B2E12E646F63>

Microsoft Word - GT21L16S2W简要说明V3.7.doc

中 日 信 息 化 的 比 较 与 合 作 一 中 日 信 息 化 的 规 模 比 较

深圳市新亚电子制程股份有限公司

<4D F736F F D20BFC9B1E0B3CCD0F2BFD8D6C6CFB5CDB3C9E8BCC6CAA6B9FABCD2D6B0D2B5B1EAD7BC2E646F63>


采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路 2

Template BR_Rec_2005.dot

一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起

4.3.3 while 语 句 用 于 无 限 循 环 当 while 语 句 的 表 达 式 永 远 不 会 为 布 尔 假 时, 循 环 将 永 远 不 会 结 束, 形 成 无 限 循 环, 也 称 死 循 环 使 用 while 语 句 构 成 无 限 循 环 的 格 式 通 常


马 克 思 主 义 公 正 观 的 基 本 向 度 及 方 法 论 原 则!! # #

伊 犁 师 范 学 院 611 语 言 学 概 论 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 2-2 语 言 学 纲 要 笔 记, 由 考 取 本 校 本 专 业 高 分 研 究 生 总 结 而 来, 重 点 突 出, 借 助 此 笔 记 可 以 大 大 提 高 复 习 效

名 称 生 命 科 学 学 院 环 境 科 学 1 生 物 学 仅 接 收 院 内 调 剂, 初 试 分 数 满 足 我 院 生 物 学 复 试 最 低 分 数 线 生 命 科 学 学 院 生 态 学 5 生 态 学 或 生 物 学 生 命 科 学 学 院

Microsoft PowerPoint - plan03.ppt

附 件 : 上 海 市 建 筑 施 工 企 业 施 工 现 场 项 目 管 理 机 构 关 键 岗 位 人 员 配 备 指 南 二 一 四 年 九 月 十 一 日 2

4 进 入 交 互 区 设 置 的 组 件 管 理, 在 组 件 管 理 中, 教 师 可 以 选 择 课 程 空 间 中 的 所 有 组 件, 并 通 过 点 击 启 用 或 不 启 用 选 定 组 件 在 课 程 空 间 中 的 显 示 5 进 入 工 作 室 管 理 的 工 作 室 首 页,

一 六 年 级 下 册 教 科 书 总 体 说 明 ( 一 ) 教 学 内 容 本 册 教 科 书 一 共 安 排 了 5 个 教 学 单 元, 其 中 前 4 个 单 元 为 新 知 识, 第 五 单 元 是 对 整 个 小 学 阶 段 所 学 数 学 知 识 系 统 的 整 理 和 复 习

!!

上证指数

第 一 部 分 MagiCAD for Revit 安 装 流 程

系统设计文档_样稿管理模块 V1.1_.doc

安达发SYS系统管理用户操作手册.doc


国际财务报告准则第13号——公允价值计量

doc

3 复 试 如 何 准 备 4 复 试 成 绩 计 算 5 复 试 比 例 6 复 试 类 型 7 怎 么 样 面 对 各 种 复 试 04 05

业务方案篇

PowerPoint Presentation

在2012年工作会议结束时的讲话

·岗位设置管理流程


Microsoft PowerPoint - plan03.ppt

文档编号:

火车浏览器脚本制作教程

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

Microsoft Word - JAVA3.rtf

2016年南开大学MBA招生信息

Microsoft Word - 第3章.doc

四川省农村义务教育学生

一、资质申请

第二次实习报告

世华财讯模拟操作手册

Microsoft Word - 文件汇编.doc

<4D F736F F D20B5DACAAEBDECD0A1BBFAC1E9B1ADCAFDD1A7BEBAC8FC C4EAB8A8B5BCD7CAC1CFCEE5C4EABCB6D7DBBACFC1B7CFB05F365F2E646F63>

Transcription:

Java 编 程 与 算 法 实 用 入 门 A Concise and Practical Introduction to Programming Algorithms in Java Chapter 8: Data-structures and object methods 第 8 章 : 数 据 结 构 和 对 象 的 方 法 1

Agenda 大 纲 FIFO data-structures 先 进 先 出 ( FIFO) 数 据 结 构 (= First In First Out) Heap data-structures 堆 结 构 Non-static methods 非 静 态 方 法 (= object methods) ( = 对 象 的 方 法 ) Revisiting lists (OO-style) 重 访 问 链 表 ( 面 向 对 象 的 类 型 ) 2

FIFOs: Mastering queues 先 进 先 出 : 控 制 队 列 Objects are considered in turn, one by one 对 象 轮 流 一 个 一 个 处 理 Process each object according to their arrival time 根 据 对 象 的 到 达 时 间 来 进 行 处 理 While objects are processed, others are queued 当 有 对 象 被 处 理 时, 其 它 对 象 排 队 等 待 First object should be first served! 第 一 个 到 达 的 对 象 被 第 一 个 处 理 Basic examples: 简 单 的 几 个 例 子 : Waiting in a queue at the post office. 在 邮 局 排 队 Printing?jobs> on a printer. 有 多 个 文 件 同 时 需 要 打 印 机 打 印 FIFO = First In First Out! FIFO = 先 进 先 出! 3

A basic solution 基 本 思 路 Stack objects in an array as soon as they arrive 一 收 到 对 象 就 把 它 存 在 栈 中 To stack an incoming object, should know the index of the last location 要 把 对 象 存 在 栈 中, 就 需 要 知 道 存 储 的 位 置 ( 索 引 ) Should also know the index of the last processed object (so that we can process the next one) While processing an object, others can come in the array (= queued) 同 时 还 需 要 知 道 上 一 个 处 理 的 对 象 的 索 引 ( 这 样 才 能 知 道 下 一 个 对 象 是 哪 个 ) 当 我 们 在 处 理 一 个 对 象 时, 其 它 对 象 可 以 在 数 组 中 排 队 4

A basic solution 基 本 思 路 An array: container array for storing objects 一 个 array( 数 组 ) : 存 储 数 组, 用 以 存 储 对 象 Two indices: lastprocessed and freeplace 两 个 索 引 : lastprocessed ( 用 以 记 录 最 后 处 理 的 对 象 位 置 ) 和 freeplace ( 用 以 记 录 可 用 空 间 的 位 置 ) To add an object x, we do array[freeplace]=x and we then increment: freeplace++ 增 加 一 个 对 象 x : array[freeplace] = x To process an object, we increment lastprocessed and we process array[lastprocessed] 当 我 们 需 要 处 理 一 个 对 象 时, 把 lastprocessed 加 1, 然 后 我 们 取 出 array[lastprocessed] 进 行 处 理 5

Visual depiction of a FIFO 借 助 图 来 理 解 先 进 先 出 算 法 ( FIFO ) 6

FIFO: Queuing objects 先 进 先 出 ( FIFO ): 对 象 排 队 7

Queuing another object 如 何 对 新 对 象 列 入 队 伍 8

Processing and queuing 处 理 对 象 和 把 新 对 象 列 入 队 列 Processing and queuing can be done in parallel using threads 处 理 对 象 和 把 新 对 象 列 入 队 列 可 以 用 多 线 程 并 行 处 理 9

Programming queues 队 列 的 代 码 10

FIFO: First In First Out FIFO : 先 进 先 出 11

Exercise: FIFO in action! 练 习 : FIFO Let A be a set of integers such that: 设 A 为 一 个 整 数 的 集 合, 满 足 以 下 条 件 : 1 belongs to A, and 1 属 于 A If a belongs to A, then 2*a+1 and 3*a belongs to A 如 果 a 属 于 A, 那 么 2*a+1 和 3*a 都 属 于 A Question: 问 题 : For a given n, display all integers less or equal to n that belong to A. 任 意 给 定 一 个 n, 显 示 出 所 有 小 于 等 于 n 并 且 属 于 A 的 数 字 12

Programming queues 给 队 列 编 程 Start with a FIFO initialized with element 1 首 先 用 1 给 FIFO 初 始 化 Use a boolean array to store whether a belong to A 构 造 一 个 布 尔 (Boolean) 数 组, 用 以 记 录 每 一 个 数 是 否 属 于 A (= marks, tag elements) ( 相 当 于 标 签 ) For each element a of the FIFO do: 对 于 FIFO 的 每 一 个 元 素 : Compute 2*a+1 and 3*a 计 算 2*a+1 和 3*a Add them to the FIFO if they are less than n...and not yet encountered (=marked) 如 果 他 们 小 于 n 并 且 是 一 个 新 数 字 ( 没 有 被 标 记 过 ) 的 话, 把 他 们 放 入 FIFO 队 列 中 Terminate when the FIFO is empty 直 到 当 FIFO 队 列 为 空 时 停 止 Display all marked elements (=result) 显 示 所 有 被 标 记 过 的 数 字 ( 结 果 ) 13

14

A few remarks on FIFOs 关 于 FIFO 的 几 点 值 得 注 意 的 地 方 Set beforehand the size of the array? 是 否 要 事 先 确 定 数 组 的 大 小? Can wrap the array using mod MAX_SIZE 可 以 用 mod MAX_SIZE 来 构 造 数 组 的 功 能 (=circular ring, extend arrays, etc.) ( 比 如 用 循 环 的 环, 扩 展 数 组 等 数 据 结 构 )...But how to check whether the queue is empty 但 问 题 是 如 何 检 验 队 列 是 否 为 空?... or full with circular arrrays? 以 及 如 何 检 验 循 环 结 构 的 数 组 是 否 已 满? 15

Priority queues: Heaps (=tas) 优 先 队 列 ( 堆 ) Objects are considered in turn 对 象 被 轮 流 考 虑 ( 等 待 处 理 ) Need to process them according to their priorities 根 据 他 们 的 优 先 级 来 处 理 While processing an objects, other may arrive 当 处 理 一 个 对 象 时, 其 它 新 对 象 可 能 会 到 达 ( 进 入 队 列 ) (= are being queued) Serve the object with the highest priority first 象 Examples: 例 子 : Ressource request 资 源 请 求 Operating system tasks 操 作 系 统 的 任 务 优 先 处 理 优 先 级 最 高 的 对 16

Defining mathematically heaps 用 数 学 语 言 来 定 义 堆 A heap is a sequence of integers: 堆 是 一 个 被 紧 密 存 储 在 数 组 中 的 整 数 序 列 stored compactly in an array such that: For example: 比 如 : 37, 22, 31, 16, 17, 2, 23, 12, 6, 9 ( heap of 10 elements) ( 10 个 元 素 的 堆 ) 17

Drawing a heap 画 出 堆 Draw a heap as a tree (=special graph Vertex/Edge) 用 树 状 结 构 ( 相 当 于 特 殊 的 图 ) 来 画 堆 Each node i contains a value t[i] and has 每 一 个 节 点 i 拥 有 一 个 值 t[i] 并 且 拥 有 0, 1, 或 2 个 对 应 值 小 于 他 们 父 亲 的 兄 弟 0, 1 or 2 siblings that contain nodes of values less than its parent Node i has children 2i and 2i+1 节 点 i 有 2 个 儿 子 : 2i 和 2i+1 37, 22, 31, 16, 17, 2, 23, 12, 6, 9: Read layer by layer, 从 树 根 到 叶 子, 一 层 一 层 地 读 from the root til the leaves 18

Storing and manipulating heaps 对 堆 进 行 存 储 和 操 作 Easy to code with a linear array 用 线 性 数 组 很 容 易 19

Fundamental property of heaps 堆 的 基 本 性 质 Largest value is stored at the root of the tree, namely 最 大 值 被 存 储 在 树 根, 即 数 组 的 第 一 个 位 置 at the first element of the array. 20

Adding an element in a heap 在 堆 中 增 加 一 个 元 素 Add the new element in position n (=n+1th element)... 把 新 元 素 放 在 位 置 n ( 第 n+1 个 元 素 ) But the condition that the array is a heap is violated... 但 这 样 的 话 数 组 就 不 是 以 堆 顺 序 存 储 So that we swap the element until.......it satisfies the heap constraint 所 以 我 们 需 要 改 变 元 素 的 顺 序 ( 交 换 元 素 ), 直 到 满 足 堆 的 条 件 为 止 21

Example: Add element 25 例 子 : 增 加 元 素 25 Not a heap anymore!!! 25>17 因 为 25 17, 这 不 再 是 一 个 堆 结 构 了!!! Swap with your parent! 交 换 父 节 点 22

Add element 25... and swap!!! 增 加 元 素 25, 然 后 交 换!!! It is a heap now! 现 在 它 是 一 个 堆 了! 23

Adding an element in the heap 在 堆 结 构 中 增 加 元 素 24

Removing the largest element of a heap 如 何 去 除 堆 中 最 大 的 元 素 We move the element at position (n-1) and put it at the root (position 0) 我 们 把 在 n-1 位 置 上 的 元 素 放 到 根 节 点 ( 位 置 0 ) 上 But it is not anymore a heap... 但 这 是 就 不 满 足 堆 的 性 质 了 So we swap to the bottom until......the heap condition is satisfied 因 此 我 们 把 元 素 交 换 到 堆 的 底 部, 直 到 满 足 堆 的 条 件 25

Removing the largest element of a heap 如 何 去 除 堆 中 最 大 的 元 素 26

27

Then Swap parent-child... 然 后 交 换 父 子 元 素 28

Removing the largest element of a heap 如 何 去 除 堆 中 最 大 的 元 素 29

Non-static methods and objects 非 静 态 方 法 和 对 象 Do not write static in front of the method 不 要 在 方 法 前 使 用 static 关 键 词 Method is thus attached to the object for which it applies for 这 样 的 话 该 方 法 就 和 他 所 应 用 的 方 法 相 关 联 For example, we prefer: 比 如, 我 们 偏 爱 u.display() rather than display(u) u.display() 而 不 是 display(u) u.addelement(a) instead of addelement(a,u) u.addelement(a) 而 不 是 addelement(a.u) To reference the object on which the method is called upon use this 如 果 要 表 示 引 用 该 方 法 的 对 象, 用 this 关 键 词 Object-oriented programming paradigm (OO) 面 向 对 象 ( OO ) 编 程 范 例 30

Object-oriented programming paradigm (OO) 面 向 对 象 ( OO ) 编 程 范 例 Design a software as a set of objects and methods applying on these objects 设 计 一 个 软 件 时, 把 软 件 视 为 一 组 对 象 以 及 一 系 列 应 用 在 这 些 对 象 上 的 方 法 Ask yourself first: 首 先 问 自 己 : - What are the objects? 什 么 是 对 象? - What are the methods? 什 么 是 方 法? Usually, a method often modifies the object (=fields) on which it applies for. 通 常 来 说, 一 个 方 法 能 够 修 改 它 所 应 用 的 对 象 (But not always, for example: Obj.Display()) ( 但 也 并 非 绝 对, 比 如 说 Obj.Display() 不 能 修 改 它 所 应 用 的 对 象 ) Picture : Public procedures 公 共 (public) 方 法 Private data 私 有 (private) 数 据 Private procedures 私 有 (private) 方 法 Interaction-Interface 交 互 - 接 口 ( Interface ) 31

OO style: 面 向 对 象 ( OO ) 风 格 : object methods 对 象 方 法? versus 还 是 static functions 静 态 函 数? 32

Static methods are useful for defining: 静 态 方 法 用 于 在 函 数 库 ( library ) 中 定 义 : - Constants 常 数 - Basic functions 基 本 函 数...in a library. 等 等 33

Heaps revisited in Object-Oriented style 用 面 向 对 象 ( OO ) 风 格 编 写 的 重 访 问 堆 Observe that the keyword static has disappeared 我 们 不 再 使 用 关 键 字 static 了 34

List in object-oriented style 面 向 对 象 风 格 的 链 表 ( list ) A cell stores information (say, an integer) and point/refer to the next one. 每 一 个 单 位 存 储 信 息 ( 比 如 一 个 整 数 ) 和 指 向 下 一 个 单 位 的 指 针 Pointing to another cell means storing a reference to the corresponding cell. 指 向 下 一 个 单 位 意 味 着 存 储 对 应 单 位 的 引 用 35

Pay special attention to null!!! 要 特 别 注 意 null!!! Remember that we cannot access fields of the null object 要 记 住, 我 们 无 法 进 入 空 对 象 的 域 Throw the exception nullpointerexception 会 抛 出 异 常 nullpointerexception Thus we need to check whether the current object is null or not, before calling the method 因 此 我 们 需 要 在 调 用 方 法 前 检 查 对 象 是 否 为 空 In the reminder, we consider that all lists (also the void list) contain a first cell that stores no information. 在 之 后 的 课 程 中, 我 们 假 设 所 有 的 链 表 ( 包 括 空 链 表 ) 的 第 一 个 不 存 储 任 何 信 息 的 元 素 36

Revisiting the linked list (OO style) 重 新 来 看 链 表 ( linked list ) ( 面 向 对 象 风 格 ) 37

Revisiting the linked list (OO style) 重 新 来 看 链 表 ( linked list ) ( 面 向 对 象 风 格 ) 38

Revisiting the linked list (OO style) 重 新 来 看 链 表 ( linked list ) ( 面 向 对 象 风 格 ) 39

Revisiting the linked list (OO style) 重 新 来 看 链 表 ( linked list ) ( 面 向 对 象 风 格 ) 40

Revisiting the linked list (OO style) 重 新 来 看 链 表 ( linked list ) ( 面 向 对 象 风 格 ) 41

Stacks (LIFO): Last In First Out 栈 数 据 结 构 : 后 进 先 出 ( LIFO, Last In First Out ) Two basic operations for that data-structure: 2 个 基 本 操 作 : Push: Add an element on top of the stack 压 入 ( push ): 在 栈 顶 加 入 一 个 元 素 Pull: Remove the topmost element 弹 出 ( Pull ): 从 栈 顶 移 去 一 个 元 素 42

Stacks (LIFO) using arrays 用 数 组 来 实 现 栈 ( LIFO ) 43

44

Stacks (LIFO) using linked lists 用 链 表 来 实 现 栈 ( LIFO ) 45

46

Stacks: API 栈 的 应 用 程 序 接 口 ( API ) // Use a Java package here // 这 里 我 们 使 用 Java 包 47

Stacks (LIFO) using linked lists 用 链 表 来 实 现 栈 ( LIFO ) Notice: Same code as StackArray demo program. 注 意 : 与 StackArray 演 示 程 序 代 码 相 同 48

Static functions versus methods 静 态 函 数 还 是 对 象 方 法 Static (class) functions: 静 态 函 数 : Access static/local variables only. 只 能 使 用 静 态 / 本 地 的 变 量 class methods» 类 方 法 Potentially many arguments in functions 静 态 函 数 中 容 易 产 生 许 多 参 数 Object methods: 对 象 方 法 : Access object fields (using this) 可 以 使 用 对 象 的 域 变 量 或 方 法 ( 用 this 关 键 字 ) Access (class) static variables too. 也 可 以 使 用 静 态 变 量 Objects are instances of classes 对 象 是 类 (class) 的 实 例 Data encapsulation 数 据 包 装 (=functions with limited number of arguments) (= 拥 有 少 量 参 数 的 函 数 ) Constructor (= field initialization) 构 造 函 数 (= 域 初 始 化 ) 49

50