【PTA数据结构 | C语言版】在顺序表 list 的第 i 个位置上插入元素 x

本专栏持续输出数据结构题目集,欢迎订阅。

文章目录

题目

请编写程序,将 n 个整数存入顺序表,对任一给定整数 x,将其插入顺序表中指定的第 i 个位置。注意:i 代表位序,从 1 开始,不是数组下标。

输入格式:

输入首先在第一行给出正整数 n(≤10^4 );随后一行给出 n 个 int 范围内的整数,数字间以空格分隔;最后一行给出插入位置 i 和待插入的元素 x,均为 int 范围内的整数。

输出格式:

分以下几种情况输出:

如果顺序表中已经有 10^4 个元素了,则不能插入,在一行中输出句子 错误:表满不能插入。

如果插入的位置不合法,则不能插入,在一行中输出句子 错误:插入位置不合法。

无论是否插入成功,都在一行中顺序输出表中的元素,每个元素后面跟一个空格。

输入样例 1:

5

1 2 3 4 5

3 8

输出样例 1:

1 2 8 3 4 5

输入样例 2:

5

4 3 6 8 0

0 1

输出样例 2:

错误:插入位置不合法。

4 3 6 8 0

代码

c 复制代码
#include <stdio.h>
#define MAX_SIZE 10000

int main() {
    int n, arr[MAX_SIZE], i, x;
    
    scanf("%d", &n);
    
    for (int j = 0; j < n; j++) {
        scanf("%d", &arr[j]);
    }
    
    scanf("%d %d", &i, &x);
    
    // 判断是否可以插入
    if (n >= MAX_SIZE) {
        printf("错误:表满不能插入。\n");
    } else if (i < 1 || i > n + 1) {
        printf("错误:插入位置不合法。\n");
    } else {
        // 将插入位置及之后的元素后移一位
        for (int j = n; j >= i; j--) {
            arr[j] = arr[j - 1];
        }
        // 插入新元素
        arr[i - 1] = x;
        n++; // 更新表长
    }
    
    // 输出表中所有元素
    for (int j = 0; j < n; j++) {
        printf("%d ", arr[j]);
    }
    printf("\n");
    
    return 0;
}
相关推荐
南棱笑笑生6 小时前
20260904实测给飞凌OK3576-C开发板刷入Rockchip原厂的IMG固件【使用飞凌的DTS】切换串口波特率为1.5Mbps
c语言·开发语言·rockchip
明月_清风11 小时前
从二叉树到 B+ 树:一文搞懂工程中「树」的演化之道
数据结构·算法·go
渡我白衣11 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
2601_9622959912 小时前
嵌入式开发语言用哪个最好,C,python或者其他
c语言·python·嵌入式开发·开发效率·系统资源
血小板要健康12 小时前
链表 阶段算法总结
java·数据结构·笔记·算法·leetcode·链表
是隼人15 小时前
buuctf-pwn [HarekazeCTF2019]baby_rop2(64位ret2libc)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
wuyk55516 小时前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
-dzk-16 小时前
【链表】LC 138.随机链表的复制
数据结构·链表
洋不写bug17 小时前
链表补充练习,双链表的模拟实现
java·数据结构·链表·双链表·底层实现
白狐_79818 小时前
408 数据结构|外部排序:流程与 k 路归并
数据结构·算法