删除顺序表中一个区间的元素 | 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;
}
相关推荐
毕设源码-邱学长5 小时前
【开题答辩全过程】以 基于Java的学校住宿管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
rookieﻬ°6 小时前
PHP框架漏洞
开发语言·php
busideyang6 小时前
为什么推挽输出不能接收串口数据,而准双向口可以?
c语言·stm32·单片机·嵌入式硬件·嵌入式
炸膛坦客7 小时前
单片机/C/C++八股:(二十)指针常量和常量指针
c语言·开发语言·c++
爱编码的小八嘎7 小时前
C语言完美演绎4-8
c语言
I_LPL7 小时前
hot100贪心专题
数据结构·算法·leetcode·贪心
兑生7 小时前
【灵神题单·贪心】1481. 不同整数的最少数目 | 频率排序贪心 | Java
java·开发语言
炸膛坦客8 小时前
单片机/C/C++八股:(十九)栈和堆的区别?
c语言·开发语言·c++
零雲8 小时前
java面试:了解抽象类与接口么?讲一讲它们的区别
java·开发语言·面试
Jay_Franklin8 小时前
Quarto与Python集成使用
开发语言·python·markdown