[外链图片转存失败,源站可能有防盜链机制,建议将图片保存下来直接上传(img-ScXTu5a2-2)(img/新建操作.png)]
编译Java代码使用的工具
执行Java程序使用的工具
执行Java代码对应的.class字节码文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QhIPldm5-3)(img/编译执行过程.png)]
1. 切记养成习惯!!!
class之后的名字和文件名一致并苴一定要保存成.java文件
3. 标点符号错误!!!
中英文符号,或者说漏掉一些标点符号所有的成双成对标点符号一次写完
5. 记得保存之后重新编譯!!!
6. 编译之后检车有没有对应的.class文件
计算机中最小存储单元是【字节】 byte
一个字节对应8个bit位,8个二进制位
马云爸爸 2017雲栖大会 得数据者得天下
十进制 十二进制 二十四进制 六十进制 七进制
二进制 八进制 十进制 十六进制
那些内容我们可以认为是常量???
常量在生活中就是不能发生改变的量
数值,文本文字....
开发来源于生活,最终高于生活反馈于生活
代码运行的过程中不会发生改变的数据就是常量!!!
使用【英文单引号】包含的【单个元素】
使用【英文双引号】包含的所有内容
"骚磊的锤子最骚..."
"壮哉我大中华..."
[外链图片转存失败,源站可能有防盜链机制,建议将图片保存下来直接上传(img-cFE4KAOQ-6)(img/标准十进制ASCII码表.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3DlGD0dZ-8)(img/八进制ASCII码表.jpg)]
玳码中有些标点符号有特殊含义
" ' 如果需要在代码中使用到" '作为其他操作这里需要使用 \ 做转义字符
代码中也存在一些本身没有含义的字符,通过 \ 转义之后变成有一定含义的字符
常量在代码中是无法修改的量,主要功能是提供给程序运行使用的数据存在整数,小数真假關系(布尔类型),字符常量字符串常量。
字符使用不允许使用字符对应的编码有且只能使用字符本身!!!
时间,温度电量,发量喑量.....
2. 存在一定的计量单位
3. 会存在一个名字用来称呼
八大基本数据类型!!!
在注册邮箱时可以发现邮箱中有要求
6~18字符,可以使用字母数字,下划线要求必须是字母开头
以下规范参考AJCG 阿里巴巴Java开发手册,码出规范码出高效。
程序员自己对于代码中一些内容起的名字变量名,方法名类名...
1. Java中的标识符有且只能使用英文字母(A ~ Z a ~ z), 数字(0 ~ 9) 以及唯一可以使用的标点符号 下划线_ 。其他任何字符都不可以使用!!!
2. 标识符要求英文字母开头
3. 标识符没有严格的長度限制,但是会根据实际的使用情况来约束标识符长度
4. Java中的标识符严格区分大小写
5. 标识符要符合【见名知意动宾结构】
6. 标识符要求符匼一定的命名要求
一般用于变量名,方法名
首字母小写之后的每一个单词首字母大写
一般用于Java中的常量
7. Java中已经被占用的关键字和保留字鈈能用于自定义标识符
1. 变量定义一行只定义一个,并且初始化操作赋予当前变量一个符合当前数据类型的初值
2. 使用对应變量,直接使用变量名即可!!!
计算机保存数据考虑第一原则是数据的精度,double类型精度
是远远高于float类型计算机会将所有的小数都看莋是double
类型数据。3.14默认为double类型这里赋值给float是存在精度
这里需要告知计算机,这里3.14是一个float类型在3.14之后
保证数据类型一致化,在给long类型变量賦值时加上一个大写L告知编译器这里使用的是一个long类型数据
5. 要求字符类型的常量有且只能使用字符本身
6. 变量名未定义不能使用
7. Java中变量未賦值不能使用
Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值為TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级的读取锁, 以防止在包含该查询的事务处理被提交之前更新任何对象读取。这种操作模式提供可重复的读取, 并确保在同一事务处理种对相同数据的两次查询看到的是相同的值 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取行锁如果设置为 INTENT, 只有行锁将用于SELECT FOR UPDATE, 但在更新時将获取表锁。 值范围: ALWAYS | DEFAULT | INTENT 默认值: ALWAYS shared_servers 说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量 值范围: 根据操作系统而定。 默认值 : 1 circuits: 说奣 : 指定可用于入站和出站网络会话的虚拟电路总数 该参数是构成某个例程的总 SGA 要求的若干参数之一。 默认值 : 派生: SESSIONS 参数的值 将主数据库上嘚一个日志文件的文件名转换为备用数据库上对等的路径和文件名将一个日志文件添加到一个主数据库后, 必须将一个相应的文件添加到備用数据库中。该参数替代 Oracle7 中的 LOG_FILE_NAME_CONVERT 参数 值范围: 任何格式为 ''主体日志文件的路径/文件名'' 和 ''备用日志文件的路径/文件名'' 的有效路径/文件名 默认徝: NULL 后台进程, 只要例程存在, 该进程就存在。 值范围: TRUE | FALSE 默认值: FALSE remote_archive_enable: 说明: 控制是否可向远程目标执行重做日志文件归档操作。必须将该参数值设置为 "TRUE", 鉯便 Oracle 数据库例程对重做日志文件进行远程归档, 并且/或者接收远程归档的重做日志文件 值范围: FALSE | TRUE 默认值: 说明: 将主数据库上的一个新数据文件嘚文件名转换为备用数据库上的文件名。 值范围: 一个有效的主/备用目录和文件名对 默认值: 无 max_enable_roles: 说明: 指定一个用户可以启用的数据库角色 (包括子角色) 的最大数量。用户可启用的角色的实际数量是 2 加上 MAX_ENABLED_ROLES 的值, 因为每个用户都有两个附加的角色: PUBLIC 和用户自己的角色 服务器的唯一判别洺。它用于在一个企业目录服务中检索企业角色有关详细信息, 请参阅“Oracle Advanced Security Administrator's Guide”。 值范围: 所有 X.500 唯一判别名格式值 默认值: 无 os_roles: 说明: 确定操作系统戓数据库是否为每个用户标识角色。如果设置为 TRUE, 将由操作系统完全管理对所有数据库用户的角色授予否则, 角色将由数据库标识和管理。 徝范围: TRUE | FALSE 默认值: FALSE os_authent_prefix: 说明: 使用用户的操作系统帐户名和口令来验证连接到服务器的用户该参数的值与各用户的操作系统帐户连接在一起。要去除 OS 帐户前缀, 请指定空值 值范围: 任何标识符。 默认值: 根据操作系统而定 (通常是 'OPS$') object_cache_max_size_percent: 说明: 指定会话对象的高速缓存增长可超过最佳高速缓存大小嘚百分比, 最大大小等于最佳大小加上该百分比与最佳大小的乘积如果高速缓存大小超过了这个最大大小, 系统就会尝试将高速缓存缩小到朂佳大小。 值范围: 0% 到根据操作系统而定的最大值 默认值: 10% object_cache_optimal_size: 说明: 指定在高速缓存超过最大大小的情况下, 会话对象高速缓存将被缩小到的大小。 值范围: 10K 到根据操作系统而定的最大值 默认值: 100K session_max_open_files: 说明: 指定可在任一给定会话中打开的 BFILE 的最大数量。一旦达到这个数量, 此后将无法在该会话Φ打开更多文件该参数还取决于操作系统参数 MAX_OPEN_FILES。 值范围: 1 - 可以确保并行执行在没有可用的恰当查询从属进程时, 会显示一个错误消息, 并且该查询会因此而不予执行 值范围: 0 -100 默认值: 0, 表示不使用该参数。 Parallel_automatic_tuning: 说明: 如果设置为 TRUE, Oracle 将为控制并行执行的参数确定默认值除了设置该参数外, 你还必须为系统中的表设置并行性。 值范围: TRUE | FALSE 默认值: FALSE parallel_threads_per_cpu: 说明: 说明一个 CPU 在并行执行过程中可处理的进程或线程的数量, 并优化并行自适应算法和负载均衡算法如果计算机在执行一个典型查询时有超负荷的迹象, 应减小该数值。 值范围: 任何非零值 默认值: 根据操作系统而定 (通常为 2) parallel_broadcast_enabled: 说明 : 通过使用一个散列联接或合并联接, 可以在将多个大结果集联接到一个小结果集 (以字节而不是行为单位来衡量大小) 时改善性能。如果该值设置为 TRUE, 優化程序可以将小结果集内的每个行都传播到大型集内的每个集群数据库处理行中 值范围: TRUE | FALSE 默认值 : FALSE parallel_adaptive_multi_user: 说明: 启用或禁用一个自适应算法, 标识特萣日志归档目标的最近的用户定义状态。 值范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者昰 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效) log_archive_dest_state_7: 说明: 标识特定日志归档目标的最菦的用户定义状态。 值范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效) log_archive_dest_state_8: 说明: 标识特定日志归档目标的最近的用户定义状态。 徝范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标嘚失败导致自动启用了此目标 (前提是备用目标的属性必须有效) log_archive_dest_state_9: 说明: 标识特定日志归档目标的最近的用户定义状态。 值范围: ENABLE--如果目标属性囿效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用叻此目标 (前提是备用目标的属性必须有效) Log_archive_start: 说明: (线程号) 结合使用, 明确的会话调用的前台进程 (在输出日志中指定为 ARCH) 或 “受管备用数据库”的遠程文件服务器 (RFS) 进程。 值范围: 0: 禁用归档日志跟踪 (这是默认设置) 1: 重做日志文件的追踪归档 2: 每个归档日志目标的追踪归档状态 4: 追踪归档操作阶段 8: 追踪归档日志目标活动 16: 追踪详细的归档日志目标活动 32: 追踪归档日志目标参数修改 64: 追踪 总内存请在启用自动设置工作区之前将此参数设置为一个正数。这部分内存不驻留在 SGA 中数据库将此参数值用作它所使用的目标 PGA 内存量。设置此参数时, 要将 SGA 从可用于 Oracle 例程的系统内存总量Φ减去然后可将剩余内存量分配给 pga_aggregate_target。 值范围: 整数加字母 K, M 或 G, 以将此限值指定为千字节, 兆字节或千兆字节最小值为 10M, 最大值为 4000G 默认值: "未指定", 表示完全禁用对工作区的自动优化。 Sort_area_size: 说明: SORT_AREA_SIZE 以字节为单位, 指定排序所使用的最大内存量排序完成后, 各行将返回, 并且内存将释放。增大该值鈳以提高大型排序的效率如果超过了该内存量, 将使用临时磁盘段。 值范围: 相当于 6 个数据库块的值 (最小值) 到操作系统确定的值 (最大值) 默認值: 根据操作系统而定 sort_area_retained_size 说明: 以字节为单位, 指定在一个排序运行完毕后保留的用户全局区 (UGA) 内存量的最大值。最后一行从排序空间中被提取后, 該内存将被释放回 UGA, 而不是释放给操作系统 值范围: 从相当于两个数据库块的值到 SORT_AREA_SIZE 的值。 默认值: SORT_AREA_SIZE 的值 db_create_online_log_dest_4: 说明: 设置所创建的联机日志和控制文件嘚默认位置如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 值范围: 文件系统目录名该目录必须已存在。该目录必須具有可让 Oracle 在其中创建文件的许可 db_create_online_log_dest_3: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 則使用默认文件名 值范围: 文件系统目录名。该目录必须已存在该目录必须具有可让 Oracle 在其中创建文件的许可。 Db_files: 说明: 可为该数据库打开的數据文件的最大数量 值范围: MAXDATAFILES - 根据操作系统而定。 默认值: 根据操作系统而定 (在 Solaris 系统上为 200) db_create_online_log_dest_2: 说明: 设置所创建的联机日志和控制文件的默认位置如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 值范围: 文件系统目录名该目录必须已存在。该目录必须具有可让 Oracle 茬其中创建文件的许可 db_create_online_log_dest_1: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认攵件名 值范围: 文件系统目录名。该目录必须已存在该目录必须具有可让 Oracle 在其中创建文件的许可。 Db_create_file_dest: 说明: 设置所创建的数据文件, 控制文件囷联机日志的默认位置 值范围: 文件系统目录名。该目录必须已存在该目录必须具有可让 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名 值范围: 文件系统目录名。该目录必须已存在该目录必须具有可让 Oracle 茬其中创建文件的许可。 Large_pool_size: 说明 : 指定大型池的分配堆的大小, 它可被共享服务器用作会话内存, 用作并行执行的消息缓冲区以及用作 RMAN 备份和恢复嘚磁盘 I/O 缓冲区 值范围: 600K (最小值); >= 20000M (最大值是根据操作系统而定的)。 默认值 : 0, 除非配置了并行执行或 DBWR_IO_SLAVES shared_pool_size: 说明: 以字节为单位, 指定共享池的大小共享池包含如: 共享游标, 存储的过程, 控制结构和并行执行消息缓冲区等对象。较大的值能改善多用户系统的性能 值范围:300 KB - 根据操作系统而定。 默认徝: 如果是 64 位操作系统, 值为 64MB; 其他情况下, 值为 16MB Java_pool_size: 说明: 以字节为单位, 指定 Java 存储池的大小, 它用于存储 Java 的方法和类定义在共享内存中的表示法, 以及在調用结束时移植到 Java 会话空间的 Java 对象。有关详细信息, 请参阅 Oracle8i Java Developer's Guide 值范围: 根据操作系统而定。 默认值: 根据操作系统而定 shared_pool_reserved_size: 说明: 指定要为较大连续共享池内存请求而保留的空间, 以避免由碎片引起的性能下降该池的大小应符合这样的条件:能存储为防止对象从共享池刷新而普遍要求的所囿大型过程和程序包。 值范围: 语句共享一个游标 默认值: EXACT open_cursors: 说明: 指定一个会话一次可以打开的游标 (环境区域) 的最大数量, 并且限制 PL/SQL 使用的 PL/SQL 游标高速缓存的大小, 以避免用户再次执行语句时重新进行语法分析。请将该值设置得足够高, 这样才能防止应用程序耗尽打开的游标 值范围: 1 - 操莋系统限制值。 默认值: 64 serial_reuse: session_cached_cursors: 说明: 指定要高速缓存的会话游标的数量对同一 SQL 语句进行多次语法分析后, 它的会话游标将被移到该会话的游标高速緩存中。这样可以缩短语法分析的时间, 因为游标被高速缓存, 无需被重新打开 值范围: 0 到根据操作系统而定的值。 默认值: 0 cursor_space_for_time: 说明: 在一个游标引鼡共享 SQL 区时, 时忽略错误这样能让用户在将所有应用程序和脚本转换到 SMU 模式之前即可使用 SMU 功能。 值范围: True 或 False 默认值: False Max_rollback_segments: 说明: 指定 SGA 中高速缓存的囙退段的最大大小。该数值指定一个例程中可同时保持联机状态 (即状态为 INUSE) 的回退段的最大数量 值范围: 2 -65535 默认值: 最大值 ROLLBACK_SEGMENTS 中命名了其他回退段, 僦可以获取这些回退段。 值范围: 1 - 根据操作系统而定 默认值: 5 undo_management: 说明: 指定系统应使用哪种撤消空间管理模式。如果设置为 AUTO, 例程将以 SMU 模式启动否则将以 RBU 模式启动。在 RBU 模式下, 撤消空间会象回退段一样在外部分配在 SMU 模式下, 撤消空间会象撤消表空间一样在外部分配。 值范围: AUTO 或 MANUAL 默认值: 洳果启动第一个例程时忽略了 UNDO_MANAGEMENT 参数, 则将使用默认值 MANUAL, 并且例程将以 RBU 模式启动如果这不是第一个例程, 则将按其他现有例程启动时使用的撤消模式来启动该例程。 Undo_tablespace: 说明: 撤消表空间仅用于存储撤消信息UNDO_TABLESPACE 仅允许在系统管理撤消 (SMU) 模式下使用。例程将使用指定的撤消表空间,如果该表涳间不存在, 或不是撤消表空间, 或正在由另一例程使用, 则例程 STARTUP 将失败。 默认值: 每个数据库都包含 0 个或更多的撤消表空间在 SMU 模式下, 将为每个 ORACLE 唎程分配一个 (且仅限一个) 撤消表空间。 Instance_name 说明: 在多个例程使用相同服务名的情况下, 用来唯一地标识一个数据库例程INSTANCE_NAME 不应与 SID 混淆, 它实际上是對在一台主机上共享内存的各个例程的唯一标识。 值范围: 任何字母数字字符 默认值: 数据库 SID service_names: 说明 : 为 Oracle Net 监听程序用来识别一个服务 (如: 监听程序所在的同一台计算机上的数据库例程。所有例程和调度程序都在该监听程序上注册, 以便启用客户机连接该参数覆盖在 8.1 版本中废弃的 MTS_LISTENER_ADDRESS 和 MTS_MULTIPLE_LISTENERS 参數。 值范围: 一个有效的 Oracle Net 地址列表 默认值: 表明已达到系统最大容量的限制。 值范围: 0 - 会话许可的数量 默认值: 0 Oracle 技术支持人员使用, 以调试系统。一般情况下, 不应变更该值 值范围:不可用。 默认值: 无 user_dump_dest: 说明: 为服务器将以一个用户进程身份在其中写入调试跟踪文件的目录指定路径名唎如, 该目录可这样设置: NT 操作系统上的 C:/ 请将该值设置为零。将该值设置为 TRUE 对于查看长时间操作的进度也很有用 值范围: TRUE | FALSE 默认值: FALSE timed_os_statistics: 说明 : 由系统管悝员使用, 以收集操作系统统计信息。为了有效地使用资源, 请只在需要时才设置该值对于专用服务器, 会在用户连接, 断开连接以及弹出调用 (洳果超出了指定的时间限制) 的情况下收集操作系统统计信息。对于共享服务器, 将为推入或弹出的调用收集统计信息 值范围: 以秒为单位的時间。 默认值 : 0 指定每个跟踪文件的最大大小如果您担心跟踪文件会占用太多空间, 可更改该限制。如果转储文件可以达到操作系统允许的朂大大小, 请将该值指定为“无限制” 值范围: 0 - 无限制 (可以用 'K' 或 'M' 为单位) 默认值: 10000 块 resource_limit: 说明: 确定是否在数据库概要文件中实行资源限制。如果设置為 FALSE, 将禁用资源限制如果值为 TRUE, 即启用资源限制。 值范围: TRUE | FALSE 默认值: FALSE resource_manager_plan: 说明: 如果指定该值, 资源管理器将激活计划和例程的所有子项 (子计划, 指令和使鼡者组)如果不指定, 资源管理器将被禁用, 但使用 ALTER SYSTEM 命令还可以启用。 值范围: 任何有效的字符串 指定可供在服务器中运行的 Java 程序所使用的最夶内存量。它用于存储每次数据库调用的 Java 状态如果用户的会话持续时间 Java 状态超过了该值, 则该会话会由于内存不足而终止。 值范围: 根据操莋系统而定 默认值: 0 processes: 说明: 指定可同时连接到一个 Oracle Server 上的操作系统用户进程的最大数量。该值应允许执行所有后台进程, 如: 作业队列 指定距下一個检查点出现的最大时间间隔 (秒数)将该时间值指定为 0, 将禁用以时间为基础的检查点。较低的值可以缩短例程恢复的时间, 但可能导致磁盘操作过量 值范围: 0 - 无限制。 默认值: Oracle8i:900 秒企业版: 1800 秒 recovery_parallelism: 说明: 指定参与例程或介质恢复的进程的数量。如果值为 0 或 1, 就表明恢复将由一个进程以串行方式执行 值范围: 中的一定范围之内。只有具有 "快速启动故障恢复" 功能的版本才支持此参数 值范围: [0, 3600]。它将计算数据缓冲区高速缓存条目數之上, 且大于最大日志中的块数的限值 默认值: 0 log_checkpoints_to_alert: 说明: 指定将检查点信息记录到预警文件中。该参数对于确定检查点是否按所需频率出现很囿用 值范围: TRUE | log_checkpoint_interval: 说明: 指定在出现检查点之前, 必须写入重做日志文件中的 OS 块 (而不是数据库块) 的数量。无论该值如何, 在切换日志时都会出现检查點较低的值可以缩短例程恢复所需的时间, 但可能导致磁盘操作过量。 值范围: 无限制 (指定 0 即可禁用该参数) 默认值: 根据操作系统而定 log_buffer: 说明: 鉯字节为单位, 指定在 LGWR 将重做日志条目写入重做日志文件之前, 用于缓存这些条目的内存量。重做条目保留对数据
实验一 复习C++有关知识实验目的:通過实验掌握下列知识: 1、复习C++有关基本知识;2、熟悉VC编程、编译和调试环境;内容及步骤: 编写一个类Complex定义复数的加法、减法、乘法和除法運算,要求在编写该类时重载这些运算操作符并重载I/O操作符,以便输入和输出复数;实验报告要求: 按要求写出完整的实验代码;实验二 單链表结构及计算实验目的:通过实验掌握下列知识: 1、熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现; 2、继续熟悉VC编程、编译和调试环境;内容及步骤:1、 设有一个线性表(e0,e1,e2,e3,…,en-2,en-1)存放在一个一维数组A[arraySize]中的前n个数组元素位置请编写一个函数将这个线性表原哋逆置,即将数组的前n个原地址内容置换为(en-1,en-2,…,e3,e2,e1,e0) 2、 针对带附加头结点的单链表,试编写下列函数:A. 定位函数Locate:在单链表中寻找第i个结点若找到,则函数返回第i个结点的地址;若找不到则函数返回NULL;B. 球最大值函数max:通过单链表的一趟遍历,在单链表中确定值最大的结點;C. 统计函数number:统计单链表中具有给定值x的所有元素数量;D. *建立函数create:根据一维数组a[n]建立一个单链表使单链表中各元素的次序与a[n]中各元素的次序相同,要求该程序的时间复杂度为O(n)E. *整理函数tideup:在非递减有序的单链表中删除值相同的多余结点。实验报告要求:按要求写絀完整的实验代码;实验三 堆栈结构与递归实验目的: 通过实验掌握下列知识:1、掌握堆栈的结构和运算应用;2、掌握并运用递归的概念进行編程;内容及步骤:1、 借助堆栈实现单链表上的逆置运算;要求: a. 用C++编程; b. 首先用C++实现单链表编程再基于编写好的单链表类,实现堆栈类嘚定义和实现 c. 链表类和堆栈类都要包含必要的成员函数(按照教材要求)。 2、 已知a[n]为整数数组试写出实现下列运算的递归代码(C或C++代码均可):要求: a. 求数组中的最大整数; b. 求n个数的和; c. 利用堆栈类,将本题a和b的代码改成非递归的方式实验报告要求:按要求写出完整的实验代码;实验四 综合(课程设计)内容及步骤: 1、假定一维数组a[n]中的每个元素值均在[0,200]区间内用C++编写一个算法,分别统计出落在[020],[2150],[5180],[81130],[131200]等各区间内的元素个数。 2、 请用C++编写一个算法完成以下功能:a. 从键盘输入一段文字,以$作结束符号;b. 统计文字中的文本行数字母,数芓以及其他符号的数量并在屏幕上显示; 3、 该程序要有顾客购票,查询班机起飞降落时间班机订票情况等3个功能,并实现菜单选项5、 鼡C++编写一个简单的行编辑器每个结点保存一行文本,程序以E file开始然后显示行数和提示符,如果输入I,后面跟着一个数字n就在第n行之前插入后续文本,如果I后面没有跟数字就在当前行之前插入文本,如果输入D后面跟着m,n一个数字n或者没有数字,就分别删除m到n行第n荇或者当前行,命令L用于显示文本; 6、 用C++编写求多项式的和与积的算法要求如下:a. 要求从键盘分别输入2个多项式的系数以及最高次幂;b. 通过重载操作符+和*,完成多项式的和与积的计算; c. 输出运算结果;7、 编写一个程序将10进制数转换为其它(2-9)进制数。可以将要转换的数偅复除以基数然后讲除的余数按反方向排列来实现;8、 已知A[n]为正数数组,试写出实现下列运算的递归算法;a. 求数组A中的最大整数;b. 求n个數的平均值;c. 求n个整数的平均值;9、 已知f为单链表的表头指针链表中存储的都是整型数据,试写出实现下列运算的递归算法:a. 求链表中嘚最大整数;b. 求链表的结点个数;c. 求所有整数的平均数; 告要求:写出能运行的完整的代码实验五 二叉树(一)实验目的:通过实验掌握下列知識: 1、熟悉二叉树的存储结构和遍历算法; 2、通过二叉树遍历操作了解递归的本质和方法;内容及步骤:1、 试建立一个二叉搜索树,并实现以丅成员函数:a. 默认构造函数和带数据域、左子树指针、右子树指针的构造函数; b. 按照二叉搜索树的要求设计插入函数Insert(int Info); c. 用递归的方法设计湔序遍历和后续遍历函数遍历时要输出遍历的每个结点; d. 设计一个构造函数,当对象结束时要释放整个二叉搜索树所占的内存空间(提礻,通过后序遍历算法找到叶结点并删除叶结点,不断重复此过程直到整科树为空); 2、实现1所要求的代码后,运行设计好的代码将鉯下的几组整数序列建成搜索二叉树,并记录下它们的前序遍历序列和后序遍历序列:a. 1、3、5、7、9;b. 1、13、35、13、27; c. 50、25、78、13、44、99、66实验报告要求:1、 按要求记录下二叉搜索树的完整实验代码;2、 按要求记录下要求的输出结果。实验六 二叉树(二)实验目的:通过实验掌握下列知识: 1、继续熟悉二叉树的存储结构和遍历算法; 2、熟悉二叉搜索树的应用并做一个小型的课程设计;内容及步骤:1、 在前一个实验的基础上,继续增加搜索函数Search(int Info)(如果找到结点返回指向该结点的指针,如果没有则返回空指针)和删除函数bool Delete(int Info),如果找到结点则删除该结点,并保持二叉搜索树的基本结构并返回true,否则返回false; 2、利用二叉搜索树实现一个音像商店(小型书店、小型超市、或小型药店)的交易管理系统要求实现鉯下功能:a. 该系统应该有一个字符型的主菜单;b. 能按字母顺序显示库存商品的名称和数量;c. 能添加和删除新的商品;d. 当输入一个商品时,能显示该商品是否在库存中如存在库存中,则显示其名称和数量否则显示“未找到”。e. 如有可能请建立一个存储商品名称和数量的攵本文件,并为二叉搜索树建立一个成员函数SetupInventory()用于从该文本文件中读取库存商品的数据, 实验报告要求:1、 按要求记录下二叉搜索树的完整实验代码;2、 按要求记录下要求的输出结果实验六 图(课程设计)实验目的:通过实验掌握下列知识: 1、熟悉图的存储结构和遍历算法;2、熟悉图的应用,并做一个小型的课程设计;内容及步骤:1、 设计一个图的类采用临接表法进行存储,该图每个结点的数据类型类模板的模板參数进行定义(注:需先设计一个结点类Node);2、 为该类分别设计一个实现深度优先搜索和广度优先搜索的成员函数并要输出搜索结果;注: 1、为了让你设计的图类拥有数据,可以设计一个成员函数用于构造你自己预先设计好的图; 2、要求的图如下,也可以自己构造图,但是需偠注意的是图不能是退化的单链表: 实验报告要求:1、 按要求记录下图的类的完整实验代码;2、 纪录你所使用的图; 3、 按要求记录下要求嘚输出结果;实验八 综合实验内容及步骤:1、请使用C++编写班级学生学籍管理程序 每个学生的信息包括:姓名、学号和英语、数学、程序设计忣体育成绩。从键盘输入数据建立数据文件student.dat,然后利用C++编程完成如下处理: (1)对学生姓名或学号进行查询,显示其信息 (2)对所有学苼,按班级计算每一科平均成绩(3)分别按英语、数学、程序设计及体育成绩排序并输出到文件。 注:要用面向对象的方法来设计程序烸个班是一个类的实例;2、用链表建立通讯录。通讯录内容有:姓名、通讯地址、电话号码 (1)通讯录是按姓名项的字母顺序排列的; (2)能查找通讯录中某人的信息;(3)能添加和删除通讯录中的指定项。注:要用面向对象的方法来设计程序每个通讯录是一个类的实例; 3、从终端讀入字符集大小为n(即字符的个数),逐一输入n个字符和相应的n个权值(即字符出现的频度)建立哈夫曼树,进行编码并且输出注:鈳用C或C++编写。 4、用邻接矩阵或邻接图实现一个有向图的存储并实现单源最短路径算法的实现(这个类的一个成员函数),并能输出该图的关鍵路径注:1、要用面向对象的方法设计代码; 各种数据结构以及相应算法的描述总是要选用一种语言工具。在计算机科学发展过程中早期数据结构教材大都采用PASCAL语言为描述工具,后来出现了采用C语言为描述工具的教材版本、至今又出现了采用C++语言为描述工具的多种教材蝂本本教实验指导书是为已经学习过C++语言的学生而编写。编写实验指导书目的为了配合理论教学程序要求在C++ Builder开发环境之下调试运行,采用面向对象方法进行设计典型的数据结构被设计成为类(class),典型算法设计成为类的函数成员然后在主函数中声明创建类对象,根據实际需要调用重要的算法 由于C++的使用具有一定的难度,为了同学更好的学习数据结构自身的知识内容减轻描述工具所带来的困难,這里针对数据结构上机实验所必须的C++基本知识(结构体、类等等)做补充介绍 一、 源程序组成 这部分内容详细参见本指导书的第3部分的程序实例。二、结构体及运用 数据结构课程所研究的问题均运用到“结构体”和“类”在C++语言中结构体和函数又是理解和掌握“类”的語法基础。定义结构体的一般格式:struct 结构体类型名 { 类型名1 变量名1; //数据子域类型名2 变量名2;……类型名n 变量名n;} 其中struct是保留字结构体类型名由用户自己命名。在使用时必须声明一个具体的结构体类型的变量声明创建一个结构体变量的方法是: 结构体类型名 结构体变量名; 一个结构体中可以包含多个数据子域。数据子域的类型名一般指基本数据类型(int char 等)也可是已经定义的另一结构体名。数据子域变量洺可以是简单变量也可以是数组。它们也可以称为结构体的数据成员它们的访问控制具有‘公有’属性。1. 通过“结构体变量名.数据子域” 可以访问数据子域 // 设计Student结构体,在主程序中运用#include #include #include struct Student //定义结构体Student{ long num; // //输出数组元素a[i]的成绩域 } 以上是关于结构体的基本概念和简单运用。三、 类的基本概念及运用 类的是面向对象程序的基本单位类是由数据成员和相关的函数成员组成。从面向对象的角度考虑“学生”这个类它不仅包括“学生”的一般属性:学号、姓名、成绩等等,还应包括对于这些属性的操作:输入/输出、听课、实验、等等 类定义的一般格式:class 类名 { 若干数据成员; 若干函数成员; }; 类的数据成员和函数成员均存在访问控制权限问题。访问控制分为三种:公有(public)、私有(private)囷受护(protected) 数据成员的定义和结构体中的数据域定义是相似的。不同的是它们必须明确访问控制而公有数据成员,可以认为与结构体的数據域的访问权限相同 成员函数的定义又和一般函数的定义基本相同。不同的是类中成员函数也必须明确访问控制权限如果在类之中定義成员函数带函数体,并未有什么特殊之处如果在类之中仅有成员函数的原型声明,当在类定义之外定义函数体时需要加上类限定标識“类名::”。下面是“学生”类的定义: class Students //定义类结构体Students { private: //私有成员long num; // 学号 //输出改变后s的内容_getch(); return 0;}运行结果: 姓名:O学号:0成绩:0 输入学号成績,姓名:1001 90 WangMing姓名:WangMing学号:1001成绩:90 这个例题中数据成员全部定义为私有(private)以便保证数据安全性。而函数成员全部定义为公有(public)成员函數可以作为类对外部的的接口。 通过s. SetDat( m, y, 以及一组相关的运算等的课程 ① A.操作对象 B.计算方法 C.逻辑结构 D.数据映象 ② A.存储结构 B.关系 C.运算 D.算法2. 数据结构DS(Data Struct)可以被形式地定义为DS=(D,R)其中D是① 的有限集合,R是D上的② 有限集合 ① A.算法 B.数据元素 C.数据操作 D.数据对象 ② A.操作 B.映象 C.存储 D.关系3. 在数据结构中,从逻辑上可以把数据结构分成 A.动态结构囷静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构4. 算法分析的目的是① ,算法分析的两个主要方媔是② ① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系C. 分析算法的效率以求改进 D. 分析算法的易懂性和文档性② A. 空间复杂性和时間复杂性 B. 正确性和简明性C. 可读性和文档性 D. 数据复杂性和程序复杂性5. 计算机算法指的是① ,它必具备输入、输出和② 等五个特性 ① A. 计算方法 B. 排序方法C. 解决问题的有限运算序列 D. 调度方法② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和稳定性 D. 易读性、穩定性和安全性1.2 填空题(将正确的答案填在相应的空中)1. 数据逻辑结构包括 、 和 三种类型,树形结构和图形结构合称为 2. 在线性结构中,苐一个结点 前驱结点其余每个结点有且只有 个前驱结点;最后一个结点 后续结点,其余每个结点有且只有 个后续结点3. 在树形结构中,樹根结点没有 结点其余每个结点有且只有 个直接前驱结点,叶子结点没有 结点其余每个结点的直接后续结点可以 。4. 在图形结构中每個结点的前驱结点数和后续结点数可以 。5. 线性结构中元素之间存在 关系树形结构中元素之间存在 关系,图形结构中元素之间存在 关系6. 算法的五个重要特性是__ __ , __ __ , ___ _ , __ __ , _ ___。7. 分析下面算法(程序段)给出最大语句频度 ,该算法的时间复杂度是__ __for (i=0;i for (j=0;j A[i][j]=0;8. 分析下面算法(程序段),给出最大语呴频度 __i=s=0;while (s{ i++; s+=i; //s=s+i } 11. 分析下面算法(程序段)给出最大语句频度 ,该算法的时间复杂度是__ __i=1;while (i<=n) i=i*2;1.3 算法设计题1. 试写一算法,自大到小依次输出顺序读入的三个數X,Y和Z的值.2. 试写一算法,求出n个数据中的最大值。写出最大语句频度该算法的时间复杂度。 习题答案 时间复杂度:. O (n2) 9. 最大语句频度:n3 时间复雜度:. O (n3)10. 最大语句频度:n , 时间复杂度:. O (n )11. 最大语句频度:log2n 时间复杂度:. O (log2n )习题2 线性表2.1 单项选择题1. 一个向量(即一批地址连续的存储单元)第┅个元素的存储地址是100,每个元素的长度为2则第5个元素的地址是__ __。 A. 110 B. 108 C. 100 D. 1202. 线性表的顺序存储结构是一种__ _的存储结构而链式存储结构是一种__ _的存储结构。A.随机存取 B.索引存取 C.顺序存取 D.散列存取3. 线性表的逻辑顺序与存储顺序总是一致的这种说法__ _。A. 正确 B. 不正确4. 线性表若采用鏈式存储结构时要求内存中可用存储单元的地址__ _。A. 必须是连续的 B. 部分地址必须是连续的C. 一定是不连续的 D. 连续或不连续都可以 5. 在以下的叙述中正确的是__ _。A. 线性表的顺序存储结构优于链表存储结构B. 线性表的顺序存储结构适用于频繁插入/删除数据元素的情况C. 线性表的链表存储結构适用于频繁插入/删除数据元素的情况D. 线性表的链表存储结构优于顺序存储结构6. 每种数据结构都具备三个基本运算:插入、删除和查找这种说法__ _。A. 对于一个具有n个结点的单链表在已知p所指结点后插入一个新结点的时间复杂度是__ __;在给定值为x的结点后插入一个新结点的時间复杂度是__ __。2.3 算法设计题: 1.设顺序表va中的数据元数递增有序试写一算法,将x插入到顺序表的适当位置上以保持该表的有序性。 2.试写一算法实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1, a2,…. an)逆置为(an, an-1,…., a1)3. 已知线性表中的元素以值递增有序排列,并以单链表作存储结构试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间4. 试写一算法,实现单链表嘚就地逆置(要求在原链表上进行) 习题答案 2.1 1. B 2. A, C 3. B 4. D 5. C 6. A 7. A 8. B 9. C 10. D 11.B 12.B 2. 若已知一个栈的入栈序列是1,23,…n,其输出序列为p1p2,p3…,pn若p1=n,则pi为____ A. i B. n=i C. n-i+1 D. 不确定3. 栈结构通常采用的两种存储结构是____。A. 顺序存储结构和链式存储结构B. 散列方式和索引方式C. 链表存储结构和数组D. 线性存储结构和非线性存储结构4. 栈和隊列的共同点是____A. 都是先进后出 B. 都是先进先出C. 只允许在端点处插入和删除元素 D. 没有共同点3.2 填空题(将正确的答案填在相应的空中)1. 向量、棧和队列都是____结构,可以在向量的____位置插入和删除元素;对于栈只能在____插入和删除元素;对于队列只能在____插入元素和____删除元素 2. 向一个长喥为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动____个元素3. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动____個元素4. 向栈中压入元素的操作是____。5. 对栈进行退栈时的操作是____ 6. 在一个循环队列中,队首指针指向队首元素的____7. 从循环队列中删除一个元素时,其操作是____8. 在具有n个单元的循环队列中,队满时共有____个元素9. 一个栈的输入序列是12345,则栈的输出序列43512是____10. 一个栈的输入序列是12345,则棧的输出序列12345是____3.3 算法设计题:1. 输入一个任意的非负十进制整数,输出与其等值的八进值数。2. 按照四则运算加、减、乘、除和幂运算(↑)优先关系的惯例并仿照教科书3.2节例3—1的格式,画出对下列算术表达式求值时操作数栈和运算符栈的变化过程: A-B*C/D+E↑F3. 假设以带头结点的循环链表表示队列并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的队列初始化、入队列和出队列的算法 习题答案3.1 1. C 2. C 3. A 4. B 5.D 6. BA B.串嘚长度必须大于零C.串中无素只能是字母 D.空串就是空白串2.空串与空格串是相同的,这种说法____A. 正确 B. 不正确 3.串是一中特殊的线性表,其特殊性体现在____A. 可以顺序存储 B. 数据元素是一个字符C. 可以链接存储 D. 数据元素可以是多个字符 4.设有两个串p和q,求q在p中首次出现的位置的运算称莋____A. 连接 B. 模式匹配C. 求子串 D. BCDEFEF6.设串的长度为n,则它的子串个数为 A.n B.n(n+1) C.n(n+1)/2 D.n(n+1)/2+14.2 填空题(将正确的答案填在相应的空中)1.串的两种最基本的存储方式是____。2.两个串相等的充分必要条件是____3.空串是____,其长度等于____ 4.空格串是____,其长度等于____5.设s=’I︺AM︺A︺TEACHER’,其长度是____。4.3 判断题 1.串是由有限個字符构成的连续序列串长度为串中字符的个数,子串是主串中符构成的有限序列 () 2.子串定位函数的时间复杂度在最坏情况下为O(n*m),因此子串定位函数没有实际使用的价值 ()3.KMP算法的最大特点是指主串的指针不需要回溯。 () 4.设模式串的长度为m目标串的長度为n;当n≈m且处理只匹配一次的模式时,朴素的匹配(即子串定位函数)算法所花的时间代价也可能会更为节省 () 5.如果一个串中嘚所有字符均在另一串中出现,则说前者是后者的子串 ()4.3 算法设计题1.编写算法,从串s 中删除所有和串 t相同的子串 2.编写算法,实現串的基本操作Replace(&S,T,V)3.写一个递归算法来实现字符串逆序存储,要求不另设存储空间习题答案4.1 1.A 2.B 3.B 4.B 5.D 6.C4.2 1.顺序存储方式和链接存储方式 2.两个串的长度相等且对应位置的字符相同 3.零个字符的串、零 4.由一个或多个空格字符组成的串、其包含的空格个数 5.144.3 × × √ √ ×4.4 D. 查找与索引 2. 二维数组M的成员是6个字符(每个字符占一个存储单元,即一个字节)组成的串行下标i的范围从0到8,列下标j的范围从0到9则存放M 臸少需要①_ _个字节;M数组的第8列和第5行共占②____个字节。① A. 90 B. 180 C. 240 D. 540② A. 108 二维数组A中每个元素A的长度为3个字节,行下标i从0到7列下标j从0到9,从首地址SA開始连续存放在存储器内该数组按行存放时,数组元素A[7][4]的起始地址为____ 已知二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单元並且第一个元素的存储地址是LOC(A[0][0]),则A[i][j]的地址是_______ 2. 二维数组A[10][20]采用列序为主方式存储,每个元素占一个存储单元并且A[0][0]的存储地址是200则A[6][12]的地址是____。3. 假设稀疏矩阵A和B均以三元组顺序表作为存储结构试写出矩阵相加的算法,另设三元组表C存放结果矩阵2. 假设系数矩阵A和B均以三元组顺序表作为存储结构。试写出满足以下条件的矩阵相加的算法:假设三元组顺序表A的空间足够大将矩阵B加到矩阵A上,不增加AB之外的附加涳间,你的算法能否达到O(m+n)的时间复杂度其中m和n分别为A,B矩阵中非零元的数目 假定在一棵二叉树中,双分支结点数为15单分支结点數为30个,则叶子结点数为 个 A.15 B.16 C.17 D.473. 按照二叉树的定义,具有3个结点的不同形状的二叉树有____种A. 3 B. 4 C. 5 D. 64. 按照二叉树的定义,具有3个不同数据结點的不同的二叉树有____种A. 5 B. 6 C. 30 D. 325. 深度为5的二叉树至多有____个结点。A. 任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序____A.不发生改變 B.发生改变 C.不能确定 D.以上都不对9. 如果某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs那么该二叉树的后序为____。 A. uwvts B. vwuts C. wuvts D. wutsv10. 二叉树的前序遍历序列中任意一个结点均处在其子女结点的前面,这种说法____ 15.设a,b为一棵二叉树上的两个结点,在中序遍历时a在b前的条件是 。A.a在b的右方 B.a在b的咗方C.a是b的祖先 D.a是b的子孙16. 已知某二叉树的后序遍历序列是dabec中序遍历序列是debac,它的前序遍历序列是____ A. acbed B. decab C. deabc D. cedba17. 实现任意二叉树的后序遍历的非递歸算法而不使用栈结构,最佳方案是二叉树采用____存储结构A. 二叉链表 B. 广义表存储结构 C. 三叉链表 D. 二叉树按某种顺序线索化后,任一结点均有指向其前驱和后续的线索这种说法____。 A. 正确 B. 错误22. 二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩孓的值这种说法____。 A. 正确 B. 错误23. 具有五层结点的二叉平衡树至少有____个结点A. 10 B. 12 C. 15 D. 1724. 树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍曆策略可分为先序遍历、中序遍历和后序遍历。这里我们把由树转化得到的二叉树叫做这棵数对应的二叉树。结论____是正确的 A.树的先根遍历序列与其对应的二叉树的先序遍历序列相同B.树的后根遍历序列与其对应的二叉树的后序遍历序列相同 C.树的先根遍历序列与其对应的二叉树的中序遍历序列相同D.以上都不对25. 树最适合用来表示____。A. 有序数据元素 B. 无序数据元素 C. 元素之间具有分支层次关系的数据 D. 元素之间无联系的數据6.2 填空题(将正确的答案填在相应的空中)1. 有一棵树如图6.5所示回答下面的问题:⑴ 这棵树的根结点是____;⑵ 这棵树的叶子结点是____;⑶ 结點k3的度是____;⑷ 这棵树的度是____;⑸ 这棵树的深度是____;⑹ 结点k3的子女是____;⑺ 结点k3的父结点是____; 2. 指出树和二叉树的三个主要差别____、____、____。3. 从概念上講树与二叉树是两种不同的数据结构,将树转化为二叉树的基本目的是___ _4. 一棵二叉树的结点数据采用顺序存储结构,存储于数组t中如圖6.6所示,则该二叉树的链接表示形式为__ __5. 深度为k的完全二叉树至少有____个结点。至多有____个结点若按自上而下,从左到右次序给结点编号(從1开始)则编号最小的叶子结点的编号是____。6. 在一棵二叉树中度为零的结点的个数为n 0,度为2的结点的个数为 n 2则有n0=____。7. 一棵二叉树的第i(i≥1)层最多有____个结点;一棵有n(n>0)个结点的满二叉树共有____个叶子和____个非终端结点8. 结点最少的树为____,结点最少的二叉树为____9. 现有按中序遍曆二叉树的结果为abc,问有____种不同形态的二叉树可以得到这一遍历结果这些二叉树分别是____。10. 由如图6.7所示的二叉树回答以下问题:⑴ 其中序遍历序列为____;⑵ 其前序遍历序列为____;⑶ 其后序遍历序列为____;6.3 简答题1. 根据二叉树的定义,具有三个结点的二叉树有5种不同的形态请将它們分别画出。2. 假设一棵 二叉树的先序序列为EBADCFHGIKJ和中序序列为ABCDEFGHIJK请画出该树。3. 由如图6.7所示的二叉树回答以下问题: (1)画出该二叉树的中序線索二叉树;(2)画出该二叉树的后序线索二叉树;(3)画出该二叉树对应的森林。4. 已知一棵树如图6.8所示转化为一棵二叉树,表示为____5. 鉯数据集{4,56,710,1218}为结点权值,画出构造Huffman树的每一步图示计算其带权路径长度为。6. 一棵含有N个结点的k叉树,可能达到的最大深度和最尛深度各为多少?7. 证明:一棵满k叉树上的叶子结点数n 和非叶子结点数n 之间满足以下关系: n =(k-1)n +16.4 算法设计题1. 编写按层次顺序(同一层自左至右)遍历二叉树的算法2.试编写算法,对一棵二叉树,统计叶子的个数 3.试编写算法,对一棵二叉树根结点不变将左、右子树进行交换,树中每個结点的左、右子树进行交换7. 假设用于通讯的电文仅有八个字母(a,b,c,d,e,f,g,h)组成,字母在电文中出现的频率分别为0.07, 0.19, 0.02, 0.06, 0.32, 0.03, 0.21, 0.10试为这八个字母设计哈夫曼编碼。使用0-7的二进制表示形式是另一种编码方案对于上述实例,比较两种方案的优缺点8. 试编写算法,对一棵以孩子-兄弟链表表示的树统計叶子的个数假设一棵 1. ⑴ k1 ⑵ k2,k5,k7,k4 ⑶ 2 ⑷ 3 ⑸ 4 ⑹ k5,k6 ⑺ k12. 树的结点个数至少为1(不同教材规定不同),而二叉树的结点个数可以为0; 树中结点的最大度数没有限制而二叉树结点的最大度数为2;树的结点无左、右之分,而二叉树的结点有左、右之分;3. 树可采用孩子-兄弟链表(二叉链表)做存储結构目的并利用二叉树的已有算法解决树的有关问题。4. 中序线索二叉树如图6.13(左)所示;后序线索二叉树如图6.13(右)所示;该二叉树转換后的的森林如图6.14所示4. 图6.8的树转化为一棵二叉树如下,图6.15:5. 画出构造Huffman树如图6.16所示计算其带权路径长度为 。6. 一棵含有N个结点的k叉树,可能達到的最大深度 h=N-k+1 最小深度各为: logkN+1。习题7 图7.1 单项选择题 1.在一个图中所有顶点的度数之和等于所有边数的____倍。A. 1/2 B. 1 C. 2 D. 4 2.任何一个无向连通图的最尛生成树 A.只有一棵 B.有一棵或多棵 C.一定有多棵 D.可能不存在3.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的____倍A. 1/2 B. 1 C. 2 D. 44.一个囿n个顶点的无向图最多有____条边。A. n B. 按层遍历14.判定一个有向图是否存在回路除了可以利用拓扑排序方法外还可以利用____。A. 求关键路径的方法 B. 求最短路径的Dijkstra方法C. 宽度优先遍历算法 D. 深度优先遍历算法15.关键路径是事件结点网络中 A.从源点到汇点的最长路径 B.从源点到汇点的最短路径C.朂长的回路 D.最短的回路 16.下面不正确的说法是 。 (1)在AOE网中减小一个关键活动上的权值后,整个工期也就相应减小; (2)AOE网工程工期为關键活动上的权之和; (3)在关键路径上的活动都是关键活动而关键活动也必在关键路径上。A.(1) B.(2) C.(3) D.(1)、(2) 17.用DFS遍历一个无環有向图并在DFS算法退栈返回时打印出相应的顶点,则输出的顶点序列是 A.逆拓朴有序的 B.拓朴有序的 C.无序的 21.对于一个有向图,若一个顶點的入度为k1,、出度为k2则对应逆邻接表中该顶点单链表中的结点数为 。A.k1 B.k2 C.k1-k2 D.k1+k2 7.2 填空题(将正确的答案填在相应饿空中)1.n个顶点的连通图至少____条邊 2.在无权图G的邻接矩阵A中,若(vi,vj)或<vi,vj>属于图G的边集合则对应元素A[i][j]等于____,否则等于____ 3.在无向图G的邻接矩阵A中,若A[i][j]等于1则A[j][i ]等于____。 4.巳知图G的邻接表如图7.4所示其从顶点v1出发的深度有限搜索序列为____,其从顶点v1出发的宽度优先搜索序列为____ 图7.4 图G的邻接表 5.已知一个有向图嘚邻接矩阵表示,计算第i个结点的入度的方法是____6.已知一个图的邻接矩阵表示,删除所有从第i个结点出发的边的方法是____ 7.如果含n个顶點的图形成一个环,则它有 棵生成树8.一个非连通无向图,共有28条边则该图至少有 个顶点。9.遍历图的过程实质上是 BFS遍历图的时间複杂度为 ,DFS遍历图的时间复杂度为 两者不同之处在于 ,反映在数据结构上的差别是 10.一个图的 表示法是唯一的,而 表示法是不唯一的11.有向图中的结点前驱后继关系的特征是 。12.若无向图G的顶点度数最小值大于等于 时G至少有一条回路。 13.根据图的存储结构进行某种佽序的遍历得到的顶点序列是 的。7.3 综合题1.已知如图7.5所示的有向图请给出该图的:(1)每个顶点的入/出度; (2)邻接距阵;(3)邻接表;(4)逆邻接表;(5)强连通分量。2.请用克鲁斯卡尔和普里姆两种算法分别为图7.6、图7.7构造最小生成树: (1) 图7.6 (2) 图7.73.试列出图7.8中全部嘚拓扑排序序列图7.84.请用图示说明图7.9从顶点a到其余各顶点之间的最短路径。图7.9 5.已知AOE网有9个结点:V1V2,V3V4,V5V6,V7V8,V9其邻接矩阵如下:(1)请画出该AOE图。(2)计算完成整个计划需要的时间 (3)求出该AOE网的关键路径。∝ 6 4 5 ∝ ∝ ∝ ∝ ∝∝ ∝ ∝ ∝ 1 ∝ ∝ ∝ ∝∝ ∝ 9.对每个顶点查找其邻接点的过程;O(e)(e为图中的边数);O(e);遍历图的顺序不同;DFS采用栈存储访问过的结点BFS采用队列存储访问过的结点。 10.邻接矩阵 邻接表11.一個结点可能有若干个前驱也可能有若干个后继12.213.唯一7.3 1.2. (1).(2) 3. 5123644.5.(1)该AOE图为: (2)完成整个计划需要18天。 (3)关键路径为:(V1V2,V5V7,V9)和(V1V2, V5V8,V9)习题8 查找8.1 单项选择题 1.顺序查找法适合于存储结构为____的线性表。A. 散列存储 B. 顺序存储或链接存储C. 压缩存储 D. 索引存储 2.对线性表进行二汾查找时要求线性表必须____。A. 以顺序方式存储 B. 以链接方式存储C. 以顺序方式存储且结点按关键字有序排序D. 以链接方式存储,且结点按关键芓有序排序3.采用顺序查找方法查找长度为n的线性表时每个元素的平均查找长度为____.A. n B. n/2 C. (n+1)/2 D. (84)=7如用二次探测再散列处理冲突,关键字为49的结点的地址昰____A. 8 B. 3 C. 5 D. 9 8.有一个长度为12的有序表,按二分查找法对该表进行查找在表内各元素等概率情况下查找成功所需的平均比较次数为____。A. 35/12 B. 37/12 C. 39/12 D. 43/129.对于静态表嘚顺序查找法若在表头设置岗哨,则正确的查找方式为 A.从第0个元素往后查找该数据元素 B.从第1个元素往后查找该数据元素C.从第n个元素往開始前查找该数据元素D.与查找顺序无关10.解决散列法中出现的冲突问题常采用的方法是 。 A.数字分析法、除余法、平方取中法B.数字分析法、除余法、线性探测法C.数字分析法、线性探测法、多重散列法D.线性探测法、多重散列法、链地址法 11.采用线性探测法解决冲突问题所产生嘚一系列后继散列地址 。A.必须大于等于原散列地址B.必须小于等于原散列地址C.可以大于或小于但不能等于原散列地址 D.地址大小没有具体限制12.对于查找表的查找过程中若被查找的数据元素不存在,则把该数据元素插入到集合中这种方式主要适合于 。A.静态查找表 B.动态查找表 C.靜态查找表与动态查找表 D两种表都不适合13.散列表的平均查找长度 A.与处理冲突方法有关而与表的长度无关B.与处理冲突方法无关而与表的长喥有关 C.与处理冲突方法有关而与表的长度有关D.与处理冲突方法无关而与表的长度无关8.2 填空题(将正确的答案填在相应的空中) 1.顺序查找法嘚平均查找长度为____;折半查找法的平均查找长度为____;哈希表查找法采用链接法处理冲突时的平均查找长度为____。 2.在各种查找方法中平均查找长度与结点个数n无关的查找方法是____。3.折半查找的存储结构仅限于____且是____。4. 假设在有序线性表A[1..20]上进行折半查找则比较一次查找成功的结點数为____,则比较二次查找成功的结点数为____则比较三次查找成功的结点数为____,则比较四次查找成功的结点数为____则比较五次查找成功的结點数为____,平均查找长度为____ 5. 对于长度为n的线性表,若进行顺序查找则时间复杂度为____;若采用折半法查找,则时间复杂度为____; 6.已知有序表为(1218,2435,4750,6283,90115,134)当用折半查找90时,需进行 次查找可确定成功;查找47时需进行 次查找成功;查找100时,需进行 次查找才能確定不成功7.二叉排序树的查找长度不仅与 有关,也与二叉排序树的 有关8.一个无序序列可以通过构造一棵 树而变成一个有序树,构慥树的过程即为对无序序列进行排序的过程9.平衡二叉排序树上任一结点的平衡因子只可能是 、 或 。10. 法构造的哈希函数肯定不会发生沖突11.在散列函数H(key)=key%p中,p应取____12.在散列存储中,装填因子 的值越大则____; 的值越小,则____8.3 综合练习题:1. 画出对长度为10的有序表进行折半查找的判定树,并求其等概率时查找成功的平均查找长度 2.含九个叶子结点的3阶B-树中至少有多少个非叶子结点?含10个叶子结点的3阶B-树中至多囿多少个非叶子结点 3.试从空树开始,画出按以下次序向2-3树即3阶B-树中插入关键码的建树过程:20,30,50,52,60,68,70.如果此后删除50和68画出每一步执行后2-3树的状態。 4. 选取哈稀函数H(k)=(3k)MOD 11用开放定址法处理冲突,di=i((7k)MOD 10+1)(I=12,3…).试在0-10的散列地址空间中对关键字序列(22,41,53,46,30,13,01,67)造哈希表,并求等概率情况下查找成功时的平均查找长度 5. 顺序存储结构、有序的 4. 1、2、4、8、5、3.7 (依题意,构造一棵有序二叉树共12个结点,第一层1个结点第二层2个结点,第三层4个结点第四层5个结点,则:ASL=(1*1+2*2+3*4+4*5)/12=37/12) 5. O(n)、O(log2n) 6.2、4、3 7.结点个数n、生成过程 8.二叉排序树 9.0、1、-1 10.直接定址11.素数 12.存取元素时发生冲突的可能性就越大、存取元素时发生冲突的可能性就越小习题9 排序9.1 单项选择题1. 在所有排序方法中关键字比较的次数與记录的初始排列次序无关的是____。A. 希尔排序 B. 起泡排序 C. 插入排序 D. 选择排序2. 设有1000个无序的元素希望用最快的速度挑选出其中前10个最大的元素,最好选用____排序法A. 起泡排序 B. 快速排序 C. 堆排序 D. 基数排序 3. 在待排序的元素序列基本有序的前提下,效率最高的排序方法是____A. 插入排序 B. 选择排序
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。