收藏 分享(赏)

【实习一】线性表及应用.ppt

上传人:gnk289057 文档编号:6861765 上传时间:2019-04-25 格式:PPT 页数:11 大小:392.50KB
下载 相关 举报
【实习一】线性表及应用.ppt_第1页
第1页 / 共11页
【实习一】线性表及应用.ppt_第2页
第2页 / 共11页
【实习一】线性表及应用.ppt_第3页
第3页 / 共11页
【实习一】线性表及应用.ppt_第4页
第4页 / 共11页
【实习一】线性表及应用.ppt_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、数据结构与算法 2009年秋季 【 实习一 】 线性表应用 【 实习题目 】 : n( n20)的阶乘 【 问题描述 】 大数运算 计算 n的阶乘( n=20)。 【 基本要求 】 ( 1)数据的表示和存储; ( 1.1) 累积运算的中间结果和最终的计算结果的数据类型要求是整型 这是问题本身的要求; ( 1.2) 试设计合适的存储结构,要求每个元素或节点最多存储数据的 3位 数值。 ( 2)数据的操作及其实现: 基于设计的存储结构实现乘法操作,要求从键盘上输入 n值,在屏幕上显示最终计算结果。 【 测试数据 】 ( 1) n 20, n! 2432902008176640000 ( 2) n

2、30, n! 265252859812191058636308480000000 ( 1)设计数据的 存储结构 : 介于阶乘运算的精确性以及实型数据表示的不精确性,本题不能采用实型表示累积运算的中间结果和最终的计算结果,而 只能用整型 。然而由于普通整型和长整型所能表述数的范围受其字长的限制 ,不能表示大数阶乘的累积结果,故必须设计一个合适的数据结构实现对数据的存储,例如可以让每个元素或节点存储数据的若干位数值。 从问题描述不难看出 n值为任意值,故为使程序尽量不受限制,应采用动态存储结构。 ( 2) 数据的操作及其实现: ( 2.1)累积运算的特点是当前的计算结果是下次乘法运算的乘数; 【

3、实现提示 】 ( 2.2)实现两个数的乘法运算须考虑: ( 1)乘数的 各位数都要与被乘数进行乘法运算 ; ( 2)乘法 过程中的进位问题 及其实现; ( 3)因每个元素或节点最多存储数据的 3位数值,故当元素或节点中的数值大于 999,需 向前一个元素或节点进位 。 【 可采用的数据结构 】 ( 1)采用 链式存储结构 实现(普通单链表,循环单链表,普通双项链表和双向循环链表中任选一种结构)。 本次实习要求 ( 2)采用动态数组实现。 ( 3) STL的 list。( 提高要求) 12 34 56 78 * 10 1 23 45 67 80 实现提示 【 假设 】 每个元素或节点最多存储数据

4、的 2位 数值。 每个节点 存储三位数据 , 进行运算时,从头节点开始乘,所得数据暂存在节点 data域中, 如果它大于 999,则向前进位,进位为 data/1000, 如果前位为空,则新建一个节点,新建节点的 data为该data/1000, 只要某一位有进位,则从该点依次向检查,如果因加了进位后使自己 data大于 999,则继续向前进位,直到每位节点数据都小于 999, 【 注意 】 输出结果时:如果节点数据域的值不足三位,应注意在前补 0以补足三位。 实现提示 1、数据结构:不带表头节点的 双向链表 。 1 first current 2、某一状态下的计算过程分析 current current-data999 头节点,插入新节点 非头节点,直接进位 当前节点 前一节点 课程实习一 【 要求 】 在编程前,应先想好实现的算法及过程,要有清晰的思路,最好是事先把算法写下来。 实习班级 实习时间 实习地点 111081-4班 10月 15日(周四) 下午 2:00-5:00 信息楼 202机房 115081-2班 10月 26日(周一) 晚 6:30-9:30 信息楼 202机房

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 统计图表

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报