删除顺序表中一个区间的元素 | 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;
}
相关推荐
Cai junhao9 分钟前
【Qt】Qt控件
开发语言·c++·笔记·qt
uyeonashi17 分钟前
【QT系统相关】QT网络
开发语言·网络·c++·qt
不过四级不改名6771 小时前
用c语言实现简易c语言扫雷游戏
c语言·算法·游戏
程序猿小D1 小时前
第27节 Node.js Buffer
linux·开发语言·vscode·node.js·c#·编辑器·vim
武昌库里写JAVA1 小时前
【微服务】134:SpringCloud
java·开发语言·spring boot·学习·课程设计
weixin_419658312 小时前
数据结构之二叉树
java·数据结构
yaoxin5211232 小时前
105. Java 继承 - 静态方法的隐藏
java·开发语言·jvm
我命由我123452 小时前
嵌入式 STM32 开发问题:烧录 STM32CubeMX 创建的 Keil 程序没有反应
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·嵌入式
C++ 老炮儿的技术栈2 小时前
手动实现strcpy
c语言·开发语言·c++·算法·visual studio
Joomla中文网3 小时前
joomla5去掉后台PHP版本警告信息
开发语言·php