2024年12月C语言六级答案及解析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

一、简答题

1、1.链表去重

给定一个带整数键值的链表

L,你需要把其中绝对值重复的键值结点删掉。即对每个键值

K,只有第一个绝对值等于K

的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定L

为21→-15→-15→-7→15,你需要输出去重后的链表21→-15→-

7,还有被删除的链表-15→15。

时间限制:5000

内存限制:65536

输入

输入在第一行给出L的第一个结点的地址和一个正整数N(≤

105,为结点总数)。一个结点的地址是非负的5位整数,空地址NULL用-1

来表示。随后N行,每行按以下格式描述一个结点:地址键值下一个结

其中`地址`是该结点的地址,`键值`是绝对值不超过104的整数,`下一个结`是下

个结点的地址。

输出

首先输出去重后的链表,然后输出被删除的链表。每个结点占一行,按输入的格式

输出。

样例输入

001005

99999-787654

23854-1500000

8765415-1

00000-1599999

001002123854

样例输出

001002123854

23854-1599999

99999-7-1

00000-1587654

8765415-1

解析:

为了解决这个问题,我们可以按照以下步骤操作:

1.创建一个空的哈希表来存储已经遇到的绝对值。

2.创建一个空链表来保存被删除的节点。

3.遍历给定的链表。对于每个节点,执行以下操作:

o获取节点的键值并取其绝对值。

o检查该绝对值是否已在哈希表中。

o如果不在哈希表中,将该绝对值添加到哈希表,并将节点添加到保留

的链表中。

o如果已在哈希表中,将节点添加到被删除的链表中。

4.输出保留的链表和被删除的链表。

注意:在遍历链表时,需要同时更新节点的下一个节点的地址,以确保链表的完整

性。此外,需要注意空地址NULL的处理,题目中已给出空地址用-

1表示。在添加节点到链表时,如果遇到一个空地址,直接跳过该节点。

具体实现时,可以使用数组或哈希表来模拟哈希表的功能。由于题目中结点的地址

是非负的5位整数,可以使用一个大小为100000的数组来存储已遇到的绝对值,其

中数组索引代表键值,数组元素的值代表该键值是否已遇到(0代表未遇到,1代表

已遇到)。这样可以在O(1)的时间复杂度内检查一个键值是否已遇到。

对于输出部分,按照题目要求的格式输出保留的链表和被删除的链表即可。

2、2.简单计算器

本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。计算

器由两个堆栈组成,一个堆栈S1存放数字,另一个堆栈S2

存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下

操作:

\-1.从S1中弹出两个数字,顺序为n1和n2;

\-2.从S2中弹出一个运算符op;

\-3.执行计算n2opn1;

\-4.将得到的结果压回S1。

直到两个堆栈都为空时,计算结束,最后的结果将显示在屏幕上。

时间限制:7000

内存限制:65536

输入

输入首先在第一行给出正整数N(1N≤103),为S1中数字的个数。

第二行给出N个绝对值不超过100的整数;第三行给出N-1个运算符——

这里仅考虑`+`、`-`、`*`、`/`这四种运算。一行中的数字和符号都以空格分隔。

输出

将输入的数字和运算符按给定顺序分别压入堆栈S1和

S2,将执行计算的最后结果输出。注意所有的计算都只取结果的整数部分。题目

保证计算的中间和最后结果的绝对值都不超过109。

如果执行除法时出现分母为零的非法操作,则在一行中输出:`ERROR:

X/0`,其中`X`是当时的分子。然后结束程序。

样例输入

样例1:

5

405832

/*-+

样例2:

5

25844

\*/-+

样例输出

样例1:

2

样例2:

ERROR:5/0

解析:

根据题目描述,我们需要设计一个利用堆栈结构的简单计算器。主要思路是将输入

的数字和运算符分别压入两个堆栈S1和S2中

文档评论(0)

喵呜刷题 + 关注
实名认证
文档贡献者

来喵呜刷题,完成你的职业蜕变!

1亿VIP精品文档

相关文档