- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2005年初赛试题
电信系2004级编程PK大赛初赛试题
(共6题,可任选一题)
比赛要求:
统一使用标准C语言,编程平台VC、TC等等均可。
提交形式:可执行文件,源代码,算法及软件设计文档,使用帮助文档。
评分标准:
功能要求 文档 源码可读性 效率 性能 总分 20 20 20 20 20 100
题目1 多版本结点链表
前言:
链表是程序开发中使用比较频繁的一种数据结构。在实际应用中,链表都会有些变化,下面就要求实现一个链表,达到特定的要求。
该链表的结构如下图所示:
图1
该链表中的每个结点都可以指向两个结点,一个new_node结点和一个next_node,next_node和一般链表中的后继结点相同。
下面解释一下new_node。该链表要求,修改该链表结点的值的时候,保留该结点原始值不变,而是为该结点创建一个新版本结点,把新的值写入新版本结点中,最后建立结点之间的联系,包括新旧版本结点之间的联系和前后两个结点之间的联系。这个过程中创建的新版本结点,我们称为new_node。
这种链表的每个结点都存在多个版本,占据了几倍的空间,所以要求提供一种回收存储空间的操作,经过存储空间回收操作之后,每个结点只保留一个最新版本,其他版本占用的空间被回收。例如:上图中的链表经过空间回收之后如下图所示:
图2
要求:
实现一个前言中所介绍的多版本结点链表;
通过命令行操作链表,支持以下命令(可以自己实现更多的其他命令)。
add NUMBER //在链表末尾增加一个结点,值为数值NUMBER
modify NODE NUMBER //修改第NODE个结点的值为数值NUMBER(按照前言中//的修改规则修改结点)
shownode NODE //依次输出第NODE个结点的所有版本结点数值
showdata //输出所有结点的有效数据(最新版本结点数据)
recycle //进行回收操作,只保留每个结点的最新版本数据
编程语言不限。
附:题目背景
某项目组为某公司开发了一款工业控制产品,该产品中使用NandFlash作为数据存储器。相对一般的数据存储介质,NandFlash具有比较特殊的硬件特性,因此对文件系统也有特殊的要求。
NandFlash的硬件特性:对NandFlash进行写操作只能把数据存储位由1变为0,不能由0变为1;对NandFlash进行擦除操作,可以把所有存储位变为1。NandFlash按页和块的方式组织,每页512字节,每块32页,读操作和写操作可以对页进行操作,擦除操作只能对块进行操作。
正因为以上硬件特性,如果要修改数据,不能按照先擦除数据,再写入新数据的步骤进行操作。一般每次要求修改的数据量是很少的,可能只有几十字节,但是如果要进行擦除操作,一次只能擦除1块(32页,16K字节)。这样将极大的降低NandFlash的寿命(NandFlash的擦写次数有限),同时效率也很低。
为解决以上问题,我们对数据页按多版本结点链表的方式管理,一般情况下不进行擦除操作,当必须进行擦除操作的时候再擦除
(如果想进一步了解该文件系统,请首先实现多版本结点链表程序。)
题目2 丢失的密码
题目描述:
尼克很久以前加密了一些非常重要的文件,当他现在要从这些文件中寻找一些重要信息时,他发现自己忘记了密码。幸运的是,他发现了一些没有加密的文件,于是他根据这些文件利用一个特殊的程序找回了密码。然而,这个程序有一个BUG,它找到的密码很长很长,因为它重复COPY原始密码,例如,若原始密码是“aab”,程序将输出“aabaabaabaab...”,但是重复次数是随机的。现在尼克想请您帮助他找出原始密码。
输入:
从指定的文本文件 如 c:\prog\keyGetted.txt 中读取字符串,此文件中每行(以回车符作为结束标志)都是一个被找出的密码,每行的长度均不超过100000,且都是小写字母a-z,注意程序找出的密码可能不是原始密码的精确复制,最后一次复制可能不完全,例如若程序找出的密码是“abcdabcdabcdab”,则原始密码也为“abcd”。
输出:
输出每一行字符串代表的原始密码到文件 如 c:\prog\keyOriginal.txt
输入举例:
abcdabcdab
aabaabaabaab
cdcdcdcdc
输出举例:
abcd
aab
cd
题目3 趣味链表
功能要求:
使用C语言实现以下功能
(1) 能够使用命令行指令生成简单的表,表的结构可设计成类似于Access形式。
如 学号 姓名 分数
01 jean
您可能关注的文档
最近下载
- 摄像头检验作业指导书.doc VIP
- 《城镇污水污泥流化床干化焚烧技术规程》(征求意见稿).pdf
- 阿奇沙坦非无菌化学原料药车间设计--本科毕业论文.docx VIP
- 办公用品供货服务计划方案.docx VIP
- 用于透明细胞肾细胞癌分型和评估透明细胞肾细胞癌预后的基因及其应用.pdf VIP
- G 正谱 赶圩归来阿里里 林凯 合吧声乐歌谱正谱子五线谱钢琴伴奏谱乐谱曲 谱弹唱谱歌曲乐曲.pdf VIP
- 零星工程施工方案范本(3篇).docx VIP
- 新疆四史应知应会内容.doc VIP
- 眼科显微器械的清洗流程.pptx VIP
- Lesson9-10Howareyoutoday(课件)新概念英语第一册.pptx VIP
文档评论(0)