数组操作C

数组操作

Description
给你一个长度为 n 的数组,并给出如下几种操作:

在下标为 a 的位置插入一个整数 b,如果其后有元素,则全部后移。例如,数组为 1, 2, 3,在下标为 1 的位置插入 4,则数组变为:1, 4, 2, 3。
删除下标为 a 的元素,如果其后有元素,则全部前移。例如,数组为 1, 2, 3,删除下标为 0 的元素,则数组变为:2, 3。
修改下标为 a 的元素的值为 b。
输出整个数组。
Input
输入数据有多组(数据组数不超过 10),到 EOF 结束。

对于每组数据:

首先输入一行 n, m (1 <= n <= 10^6, 1 <= m <= 10^4),分别表示初始数组的长度和操作次数。
接下来一行输入 n 个用空格隔开的整数 Ai (0 <= Ai <= 1000),表示初始的数组。
最后有 m 行,每行对应一次操作,根据操作类型分为不同的输入格式(具体含义参见描述部分,0 <= a, b <= 1000):
1 a b
2 a
3 a b
4
Output
对于每组数据中的每次类型为 4 的操作,输出一行,表示此时的数组,每个整数之间用空格隔开。

Samples
Sample #1
Input
3 6
1 2 3
1 1 4
4
2 2
4
3 2 8
4
Output
1 4 2 3
1 4 3
1 4 8

分析:

对于链表简单的插入、删除、修改、打印输出

#include <bits/stdc++.h>
using namespace std;
typedef struct node{int data;struct node *next;
}s;
struct node *creat(int n){s *head,*tail,*p;int a;head=(struct node *)malloc (sizeof(struct node));tail=head;tail->next=NULL;for(int i=0;i<n;i++){cin>>a;p=(struct node *)malloc (sizeof(struct node));p->data=a;tail->next=p;tail=p;tail->next=NULL;}return head;
};
struct node *insert(s *head,int a,int b){s *p,*r,*q;p=head->next;q=head;int t=0;while(p&&t<a){p=p->next;q=q->next;t++;}r=(struct node *)malloc (sizeof(struct node));r->data=b;if(p==NULL){//到末尾了 p->next=r;r->next=NULL; }else{r->next=p;q->next=r;}return head;    
};
s *delet(s *head,int a){s *p,*r,*q;p=head->next;q=head;int t=0;while(p->next!=NULL&&t<a){p=p->next;q=q->next;t++;}if(p->next==NULL&&t==a){q->next=NULL;}else if(t==a&&p->next!=NULL){q->next=p->next;}free(p);return head;
};
struct node *change(s *head,int a,int b){s *p,*r,*q;p=head->next;q=head;int t=0;while(p&&t<a){p=p->next;q=q->next;t++;}if(p!=NULL){ p->data=b;}return head;    
};
void printout(s *head){s *p;p=head->next;while(p){cout<<p->data<<" ";p=p->next;}cout<<endl;
}
int n,m,x,a,b,k=0;
int main(){while(cin>>n>>m){s *head,*p,*q,*r,*t;head=creat(n);for(int i=0;i<m;i++){cin>>x;if(x==1){cin>>a>>b;head=insert(head,a,b);}if(x==2){cin>>a;head=delet(head,a);}if(x==3){cin>>a>>b;head=change(head,a,b);}if(x==4){printout(head);}}	}return 0;
}

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

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

相关文章

acwing周赛115第二题-奶牛照相

5132. 奶牛照相 - AcWing题库 约翰的农场有 n 头奶牛&#xff0c;编号 1∼n。 其中&#xff0c;第 i 头奶牛的宽度为 wi&#xff0c;高度为 hi&#xff0c; 有一天&#xff0c;它们聚餐后决定拍照留念。 关于拍照的描述如下&#xff1a; 它们一共拍了 n 张照片&#xff0c;其中…

PyQt5中exec()与exec_()的区别

在PyQt5中&#xff0c;exec()和exec_()是两个不同的方法&#xff0c;用于执行动态创建的Python代码。它们的主要区别在于exec()是Python的关键字&#xff0c;但不能直接用作方法名&#xff0c;因此在PyQt5中&#xff0c;使用exec_()作为替代。 exec_()方法接受一个字符串作为参…

debian11 安装 k8s,containerd ,阿里云镜像(已成功)

1. 环境准备 系统要求&#xff1a;至少 2GB RAM&#xff08;建议 4GB 或更多&#xff09;&#xff0c;网络连接。 节点准备&#xff1a;至少 3 台机器&#xff0c;1 台作为 Master 节点&#xff0c;2 台作为 Worker 节点。 安装sudo apt update apt install sudo设置主机名&a…

Java图形化界面编程——AWT概论 笔记

2.3 Container容器 2.3.1 Container继承体系 Winow是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;Panel可以容纳其他组件&#xff0c;但不能独立存在&#xff0c;它必须内嵌其他容器中使用&#xff0c;默认使用FlowLayout管理其内部组件布局&#xff1b;S…

Spring Cloud Feign:声明式服务调用

1. 介绍 Spring Cloud Feign 1.1 什么是 Spring Cloud Feign Spring Cloud Feign 是一个基于 Netflix Feign 的声明式服务调用客户端&#xff0c;它简化了基于 REST 的服务调用&#xff0c;使得服务之间的通信变得更加轻松和直观。通过 Feign&#xff0c;开发人员可以像调用本…

交通管理|交通管理在线服务系统|基于Springboot的交通管理系统设计与实现(源码+数据库+文档)

交通管理在线服务系统目录 目录 基于Springboot的交通管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、驾驶证业务管理 3、机动车业务管理 4、机动车业务类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计…

MySQL学习Day15——MySQL安装与使用

一、Linux下的MySQL的安装与使用: 卸载MySQL: 1.关闭当前MySQL服务:systemctl stop mysql.service 2.查看当前mysql安装状况:rpm -qa | grep -i mysql 3.卸载上述命令查询出的已安装的程序:yum remove mysql-xxx mysql-xxx mysql-xxxx 4.删除mysql相关文件: (1)查找相关文…

Python五级考试笔记

Python五级考试笔记【源源老师】 五级标准 一、 掌握字符串的转义符、format()格式化方法。 二、 掌握列表、元组、字符串、range类型的用法及常用操作。 三、 理解字典类型的概念&#xff0c;掌握它的基础用法及操作。 四、 理解集合类型的概念&#xff0c;掌握它的基础用法及…

解决vscode报错,在赋值前使用了变量“XXX“

问题&#xff1a;如图所示 解决方法&#xff1a; 法一&#xff1a; 补全函数使其完整 法二&#xff1a; 使用断言

c++Qt网络操作

1、基础概念 1.1 TCP/UDP TCP 是一种面向连接的传输层协议&#xff0c;它能提供高可靠性通信(即数据无误、数据无丢失、 数据无失序、数据无重复到达的通信) 适用情况&#xff1a; 1.SN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议 2、适合于对传输质量要求较…

【STM32 CubeMX】串口编程DMA

文章目录 前言一、DMA方式1.1 DMA是什么1.2 CubeMX配置DMA1.3 DMA方式函数使用DMA的发送接收函数 总结 前言 在嵌入式系统中&#xff0c;串口通信是一项至关重要的功能&#xff0c;它允许单片机与外部设备进行数据交换&#xff0c;如传感器、显示器或其他设备。然而&#xff0…

Linux笔记之xhost +和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解

Linux笔记之xhost 和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解 ——2024-02-11 code review! 文章目录 Linux笔记之xhost 和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解xhost 的作用xhost 与 Docker 的关系 -e GDK_SCALE 和 -e GDK_DPI_SCALE详解GDK_SCALEGDK_DPI_SC…

【使用IntelliJ IDEA 配置Maven入门——详细讲解】

使用IntelliJ IDEA 配置Maven 1. 介绍2. 安装 Maven&#xff08;如果你的系统尚未安装&#xff09;3. 在 IntelliJ IDEA 中配置 Maven4. 创建/导入 Maven 项目5. 编译和运行 Maven 项目6. 提示 1. 介绍 IntelliJ IDEA 是一个广受欢迎的Java集成开发环境&#xff08;IDE&#x…

【Linux】进程的初步认识

进程的初步认识 基本概念描述进程task_struct-PCB的一种task_stuct内容分类 查看进程通过系统调用获取进程标识符 基本概念 要了解进程&#xff0c;首先我们要知道两点 我们可以同时启动多个程序&#xff0c;也就意味着我们可以将多个.exe文件加载到内存操作系统如何去管理这些…

Resolving Low-Level Graphics Issues

Resolving Low-Level Graphics Issues 在远程操作其他工作站上的matlab的时候&#xff0c;无法显示仿真结果&#xff0c;但是在真实的工作站上操作的话又可以看到simulation的结果&#xff0c;并且远程的时候进行仿真&#xff0c;就会显示以下的错误提示&#xff1a; >>…

036-安全开发-JavaEE应用第三方组件Log4j日志FastJson序列化JNDI注入

036-安全开发-JavaEE应用&第三方组件&Log4j日志&FastJson序列化&JNDI注入 #知识点&#xff1a; 1、JavaEE-组件安全-Log4j 2、JavaEE-组件安全-Fastjson 3、JavaEE-基本了解-JNDI-API 演示案例&#xff1a; ➢Java-三方组件-Log4J&JNDI ➢Java-三方组件-Fa…

OpenAI全新发布文生视频模型Sora - 现实,不存在了

OpenAI&#xff0c;发他们的文生视频大模型&#xff0c;Sora了。。。。。 而且&#xff0c;是强到&#xff0c;能震惊我一万年的程度。。。 https://openai.com/sora 如果非要用三个词来总结Sora&#xff0c;那就是“60s超长长度”、“单视频多角度镜头”和“世界模型” &am…

Codeforces Round 926 (Div. 2)(A,B,C,D,E,F)

这场还是很有含金量的&#xff0c;B题开始就有难度了&#xff0c;B是个推结论的题&#xff0c;C要推结论然后递推&#xff0c;D题是有点难的树上DP&#xff08;主要是状态转移方程不好写&#xff09;&#xff0c;E题是个二进制预处理然后状压DP&#xff0c;F题是个数论&#xf…

力扣代码学习日记三

Problem: 242. 有效的字母异位词 文章目录 思路解题方法复杂度代码 思路 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 示例 1: 输入: s…

写一个程序,输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数输入-1表示结束

#include <stdio.h> int main(void) {int x;int count[10];int i;for(i0;i<10;i){//初始化数组 count[i]0;}scanf("%d",&x);while(x!-1){if( x>0 && x<9){count[x];//数组参与运算 }scanf("%d",&x);}for(i0;i<10;i){pr…