删除顺序表中一个区间的元素 | C语言代码

题目:

已知一组数据,采用顺序存储结构存储,其中所有的元素为整数。设计一个算法,删除元素值在[x,y]之间的所有元素。

输入格式:

输入包含三行数据,第一行是表中元素个数,第二行是顺序表的各个元素,第三行是区间x和y。

输出格式:

删除元素值在[x,y]之间的所有元素后,输出新的顺序表。(最后无空格)

输入样例:

10

55 11 9 15 67 12 18 33 6 22

10 20

输出样例:

55 9 67 33 6 22

代码:

cpp 复制代码
#include <stdio.h>

// 定义删除函数
void delete (int list[], int *n, int x, int y) {
	// 定义删除后顺序表的索引,在遍历删除元素后,new_size就成为删除元素后顺序表的长度
	int new_size = 0;

	// 遍历删除区间内的元素
	for (int i = 0; i < *n; i++) {
		if (list[i] < x || list[i] > y) {
			list[new_size] = list[i];
			new_size++;
		}
	}

	// 赋值删除后顺序表的长度
	*n = new_size;
}

int main() {
	// 定义顺序表长度
	int n;
	scanf("%d", &n);

	// 建立顺序表
	int list[100];
	for (int i = 0; i < n; i++) {
		scanf("%d", &list[i]);
	}

	// 输入要删除元素的区间
	int x, y;
	scanf("%d %d", &x, &y);

	// 由于在进行删除元素后,要使用删除后数组的长度进行遍历,因此数组长度需要传址
	delete (list, &n, x, y);

	// 遍历删除元素后的顺序表
	for (int i = 0; i < n; i++) {
		printf("%d", list[i]);
		if (i < n - 1) {
			printf(" ");
		}
	}
	printf("\n");

	return 0;
}
相关推荐
踏着七彩祥云的小丑3 小时前
pytest——Mark标记
开发语言·python·pytest
Dream of maid3 小时前
Python12(网络编程)
开发语言·网络·php
W23035765734 小时前
经典算法:最长上升子序列(LIS)深度解析 C++ 实现
开发语言·c++·算法
.Ashy.4 小时前
2026.4.11 蓝桥杯软件类C/C++ G组山东省赛 小记
c语言·c++·蓝桥杯
Y4090014 小时前
【多线程】线程安全(1)
java·开发语言·jvm
2401_892070984 小时前
链栈(链式栈) 超详细实现(C 语言 + 逐行精讲)
c语言·数据结构·链栈
不爱吃炸鸡柳4 小时前
Python入门第一课:零基础认识Python + 环境搭建 + 基础语法精讲
开发语言·python
minji...4 小时前
Linux 线程同步与互斥(三) 生产者消费者模型,基于阻塞队列的生产者消费者模型的代码实现
linux·运维·服务器·开发语言·网络·c++·算法
Dxy12393102165 小时前
Python基于BERT的上下文纠错详解
开发语言·python·bert