PTA 6-3 入侵者围剿第二关3情报解密

2024-05-26 21:44

本文主要是介绍PTA 6-3 入侵者围剿第二关3情报解密,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

经过上一步已经将2个分队得到的秘密情报合并到一起,并进行了信息去重。接下来,经过情报的分析,发现情报进行加密的方式,将链表从正中间断开,然后后面的链表全部接到前面,输出来的次序就是敌方的武器发射次序。

函数接口定义:

ptr encrypt(ptr head,ptr last,ptr s[]);

带头结点,head是头指针,last是尾指针,s是ptr类型的数组。为了对链表方便的取正中央位置,加了一个辅助数组(以空间换时间)。每遍历一个结点,把当前结点的地址存到数组s中,s的元素个数就是结点个数,s的元素值就是链表结点的地址

裁判测试程序样例:

#include <stdio.h> 
#include <malloc.h> 
#include <string.h> 
typedef struct snode { 
char name[10]; int age; int num; 
struct snode *next; }node,*ptr; 
ptr creat();//系统默认实现(上一步代码) 
ptr add(ptr ha,ptr hb);//系统默认实现(上一步代码) 
ptr output(ptr h);//系统默认实现,有返回值,返回尾结点的地址 
ptr encrypt(ptr head,ptr last,ptr s[]);//答题者实现 
ptr createnode(ptr p,ptr last);//系统实现(上一步代码) 
void addremaining(ptr p,ptr q,ptr last);//系统实现(上一步代码) 
int main() { 
ptr h1,h2,h3,s[100]; h1=creat(); // 
output(h1); h2=creat(); // 
output(h2); h3=add(h1,h2); 
ptr last3=output(h3); 
last3=encrypt(h3,last3,s); 
output(h3); return 0; } 
ptr output(ptr h)//返回尾结点地址 { 
ptr q,p; p=h->next; 
while(p!=NULL) { 
printf("%s %d %d; ",p->name,p->age,p->num); 
q=p; p=p->next; } 
printf("\n"); return q; } 
ptr creat() { ptr head,tail,q; 
char tname[10]; int tnum; int tage; 
head=tail=(ptr)malloc(sizeof(node)); 
head->next=NULL; 
scanf("%d%s%d",&tnum,tname,&tage); 
while(tnum!=0) { 
q=(ptr)malloc(sizeof(node)); 
strcpy(q->name,tname); 
q->num=tnum; 
q->age=tage; 
tail->next=q; 
q->next=NULL; 
tail=tail->next; 
scanf("%d%s%d",&tnum,tname,&tage); } 
return head; } 
/* 请在这里填写答案 */

输入样例1:

2 tom 22
4 jim 23
6 ho 21
0 0 0
1 lili 20
4 jim 23
7 bobo 19
9 fei 20
0 0 0

输出样例1:

lili 20 1; tom 22 2; jim 23 4; ho 21 6; bobo 19 7; fei 20 9; 
ho 21 6; bobo 19 7; fei 20 9; lili 20 1; tom 22 2; jim 23 4; 

6个结点,后三个结点断开,重串到链表的首部,画出示意图,再理清串接关系

代码实现:

​
ptr encrypt(ptr head, ptr last, ptr s[]) {int blacksheep=0;ptr p = head->next;while (p!= last) {s[blacksheep] = p;p = p->next;blacksheep++;}int mid = (blacksheep-1) / 2;p->next=NULL;head->next=s[mid+1];last->next=s[0];s[mid]->next=NULL;return head;
}​

这篇关于PTA 6-3 入侵者围剿第二关3情报解密的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005671

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

PTA求一批整数中出现最多的个位数字

作者 徐镜春 单位 浙江大学 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。 输入格式: 输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

【C#生态园】解密C# Web框架:选对框架,事半功倍

探秘C# Web开发利器:六款高性能框架与库详细解读 前言 在当今的软件开发领域,C#作为一种多用途编程语言,被广泛应用于各种类型的应用程序开发。特别是在Web开发领域,有许多优秀的C# Web框架和库,本文将对其中一些备受关注的框架进行介绍和比较,帮助读者更好地选择适合其项目需求的工具。 欢迎订阅专栏:C#生态园 文章目录 探秘C# Web开发利器:六款高性能框架与库详细解

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

详解BitLocker模式及加密数据和解密方法及无法访问解决之道

BitLocker主要有两种工作模式:TPM模式和U盘模式,同时为了实现更高程度的安全,我们还可以同时启用这两种模式。 BitLocker 自动设备加密在全新安装体验 (OOBE) 期间启动。 但是,只有在用户使用 Microsoft 帐户或 Azure Active Directory 帐户登录后,才会启用(提供)保护。 在此之前,保护已暂停,数据不受保护。 使用本地帐户不会启用 BitLoc

linux命令总结第二弹

系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info