1228: 顺序表的删除I

题目描述

长度为n的顺序表L,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,删除线性表中所有值为x的数据元素。

输入

输入包含一个整数n代表顺序表L长度,一个x代表要删除的元素。

接下来包含n个整数,代表顺序表L中的元素。

输出

输出删除元素x后的顺序表。

样例输入
复制代码
5 2
1 3 2 5 2
样例输出
复制代码
1 3 5

代码:

cpp 复制代码
	#include<bits/stdc++.h>
	using namespace std;
	bool Delete_x(vector<int> &a, int &len, int x){//删除线性表中所有值为x的元素 
		if(a.empty()==true){
			return false;
		}
		int count = 0;//用于记录值为x的元素个数 
		for(int i=0;i<len;++i){
			if(a[i]==x){
				count++;
			}
			else{
				a[i-count]=a[i];//当前位置元素向前移动k个位置 
			}
		} 
		len = len - count;
		return true;
	}
	int main(){
		int n,x;//n为顺序表长度,x为要删除的元素的值 
		scanf("%d %d",&n,&x);
		int len = n;
		vector<int> a(n);
		for(int i=0;i<len;++i){
			scanf("%d",&a[i]);
		}
		if(Delete_x(a,len,x)==true){
			for(int i=0;i<len;++i){
				printf("%d ",a[i]);
			}
		}
		else{
			printf("ERROR\n");
		}
		return 0;
	}
相关推荐
快乐zbc2 小时前
【C++ 基础】:给定一个指针 p,你能判断它是否指向合法的对象吗?
c++
sulikey2 小时前
C++类和对象(下):初始化列表、static、友元、内部类等核心特性详解
c++·static·初始化列表·友元·匿名对象·内部类·编译器优化
oioihoii3 小时前
C++网络编程:从Socket混乱到优雅Reactor的蜕变之路
开发语言·网络·c++
笨鸟要努力4 小时前
Qt C++ windows 设置系统时间
c++·windows·qt
神仙别闹4 小时前
基于C++实现(控制台)应用递推法完成经典型算法的应用
开发语言·c++·算法
AA陈超7 小时前
Lyra学习004:GameFeatureData分析
c++·笔记·学习·ue5·虚幻引擎
xlq223227 小时前
22.多态(下)
开发语言·c++·算法
不会c嘎嘎8 小时前
【数据结构】AVL树详解:从原理到C++实现
数据结构·c++
AKDreamer_HeXY9 小时前
ABC434E 题解
c++·算法·图论·atcoder
罗湖老棍子9 小时前
完全背包 vs 多重背包的优化逻辑
c++·算法·动态规划·背包