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;
}​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/16311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

绿色智能:AI机器学习在环境保护中的深度应用与实践案例

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

在vps的centos系统中用Python和青龙检测网页更新

环境&#xff1a;vps&#xff0c;centos7&#xff0c;python3.8.10&#xff0c;青龙面板&#xff08;用宝塔安装&#xff09; 任务&#xff1a;用python代码&#xff0c;监控一个网站页面是否有更新&#xff08;新帖子&#xff09;&#xff0c;若有&#xff0c;则提醒&#xf…

【数据结构】二叉树的认识与实现

目录 二叉树的概念&#xff1a; 二叉树的应用与实现&#xff1a; 二叉树实现接口&#xff1a; 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 二叉树节点个数​编辑 二叉树叶子节点个数 二叉树第k层节点个数 二叉树查找值为x的节点​编辑 二叉树前序遍…

XSS+CSRF攻击

一、前言 在DVWA靶场的XSS攻击下结合CSRF攻击完成修改密码 也就是在具有XSS漏洞的情况下实施CSRF攻击 二、实验 环境配置与上一篇博客一致&#xff0c;有兴趣可以参考CSRF跨站请求伪造实战-CSDN博客 首先登录DVWA&#xff0c;打开XSS模块 name随便输入&#xff0c;message…

嵌入式0基础开始学习 Ⅲ Linux基础(1)Linux基本命令

1.APT unbuntu中功能最强大的命令行软件包管理工具&#xff0c; 用来获取&#xff0c;安装&#xff0c;编译&#xff0c;卸载&#xff0c;查询软件包。 工作原理; /etc/apt/sources.list -> 文件 用来指针ubuntu的软件源服务器…

HQL面试题练习 —— 合并数据

题目来源&#xff1a;京东 目录 1 题目2 建表语句3 题解 1 题目 已知有数据 A 如下&#xff0c;请分别根据 A 生成 B 和 C。 数据A ------------ | id | name | ------------ | 1 | aa | | 2 | aa | | 3 | aa | | 4 | d | | 5 | c | | 6 | aa…

Android 使用 ActivityResultLauncher 申请权限

前面介绍了 Android 运行时权限。 其中&#xff0c;申请权限的步骤有些繁琐&#xff0c;需要用到&#xff1a;ActivityCompat.requestPermissions 函数和 onRequestPermissionsResult 回调函数&#xff0c;今天就借助 ActivityResultLauncher 来简化书写。 步骤1&#xff1a;创…

基于FPGA的VGA协议实现

文章目录 一、VGA介绍1.1 VGA原理1.2VGA电路 二、配置三、实现3.1 字符显示3.2图片显示 四、代码4.1.vga驱动模块4.2数据模块4.3按键消抖模块4.4顶层模块4.5TCL引脚绑定 参考 一、VGA介绍 1.1 VGA原理 VGA接口 最主要的几根线&#xff1a; VGA其实就是相当于一块芯片&#…

gcc g++不同版本切换命令

sudo update-alternatives --config g sudo update-alternatives --config gcc ubuntu20.04 切换 gcc/g 版本_ubuntu降低g版本-CSDN博客

YOLOv10尝鲜测试五分钟极简配置

最近清华大学团队又推出YOLOv10&#xff0c;真是好家伙了。 安装&#xff1a; pip install supervision githttps://github.com/THU-MIG/yolov10.git下载权重&#xff1a;https://github.com/THU-MIG/yolov10/releases/download/v1.0/yolov10n.pt 预测&#xff1a; from ult…

Superset,基于浏览器的开源BI工具

BI工具是数据分析的得力武器&#xff0c;目前市场上有很多BI软件&#xff0c;众所周知的有Tableau、PowerBI、Qlikview、帆软等&#xff0c;其中大部分是收费软件或者部分功能收费。这些工具一通百通&#xff0c;用好一个就够了&#xff0c;重要的是分析思维。 我一直用的Tabl…

【HMGD】STM32/GD32 CAN通信

各种通信协议速度分析 协议最高速度(btis/s)I2C400KCAN1MCAN-FD5M48510MSPI36M CAN协议图和通信帧 CubeMX CAN配置说明 CAN通信波特率 APB1频率 / 分频系数 /&#xff08;BS1 BS2 同步通信段&#xff09;* 1000 ​ 42 / 1 / (111) * 1000 ​ 14,000 KHz ​ 1400000…

吉林大学计科21级《软件工程》期末考试真题

文章目录 21级期末考试题一、单选题&#xff08;2分一个&#xff0c;十个题&#xff0c;一共20分&#xff09;二、问答题&#xff08;5分一个&#xff0c;六个题&#xff0c;一共30分&#xff09;三、分析题&#xff08;一个10分&#xff0c;一共2个&#xff0c;共20分&#xf…

前端自定义Echarts 图的时候,重新渲染,页面还保存原来的数据

自定义 setAxisSingleOption(optionData){var options this.axisSingleOptionoptions.title.text optionData.title.textoptions.xAxis.data optionData.xAxis.dataoptions.legend.data optionData.legend.dataoptions.series optionData.seriesoptions.grid optionData…

【C语言】10.C语言指针(1)

文章目录 1.内存和地址1.1 内存1.2 究竟该如何理解编址 2.指针变量和地址2.1 取地址操作符&#xff08;&&#xff09;2.2 指针变量和解引⽤操作符&#xff08;*&#xff09;2.2.1 指针变量2.2.2 如何拆解指针类型2.2.3 解引⽤操作符 2.3 指针变量的⼤⼩ 3.指针变量类型的意…

汇编:字符串的输出

在16位汇编程序中&#xff0c;可以使用DOS中断21h的功能号09h来打印字符串&#xff1b;下面是一个简单的示例程序&#xff0c;演示了如何在16位汇编程序中打印字符串&#xff1a; assume cs:code,ds:data ​ data segmentszBuffer db 0dh,0ah,HelloWorld$ //定义字符串 data …

【C++】哈夫曼编码:高效的压缩算法

哈夫曼编码&#xff1a;高效的压缩算法 什么是哈夫曼编码&#xff1f; 哈夫曼编码是一种用于数据压缩的无损编码方法&#xff0c;由David A. Huffman于1952年提出。它利用了字符出现频率的不均匀性&#xff0c;通过构建最优前缀码&#xff0c;能够有效减少数据的冗余&#xf…

Flutter仿照微信实现九宫格头像

一、效果图 2、主要代码 import dart:io; import dart:math;import package:cached_network_image/cached_network_image.dart; import package:flutter/material.dart;class ImageGrid extends StatelessWidget {final List<String> imageUrls; // 假设这是你的图片URL…

关于Iterator 和ListIterator的详解

1.Iterator Iterator的定义如下&#xff1a; public interface Iterator<E> {} Iterator是一个接口&#xff0c;它是集合的迭代器。集合可以通过Iterator去遍历集合中的元素。Iterator提供的API接口如下&#xff1a; forEachRemaining(Consumer<? super E> act…

VS2022通过C++网络库Boost.Asio创建一个简单的同步TCP服务器和客户端

Boost.Asio是一个用于网络和异步编程的C库。它提供了一种跨平台的方式来处理网络编程和异步操作&#xff0c;使开发人员能够创建高性能的网络应用程序&#xff0c;asio几乎支持所有你能够想到的网络协议&#xff0c;比如tcp、udp、ip、http、icmp等&#xff0c;C通过asio库可以…