[蓝蓝计算机考研算法]-day23顺序表的删除、逆转

79 阅读1分钟

顺序表元素删除

删除顺序表中最小的元素,由最后一个元素补充。

示例

输入:3 2 9 5 6
输出:3 6 9 5 6

思路

找出最小值,并保存其下标。遍历数组,当循环到最小值所在下标时,将数组最后一个元素替代最小值,并输出即可。

具体实现

#include<bits/stdc++.h>
using namespace std;

int main(){
	int a[100];
	int n=0,x;
	while(cin>>x){ //输入数组中的数 
		a[n++]=x;
		if(cin.get() == '\n') break;
	}
	int i,pos,min=a[0]; //求最小值 
	for(i=1; i<n; i++){
		if(min>a[i]){
			min=a[i];
			pos=i; //保存最小值下标
		} 	
	}
	
	for(int j=0; j<n; j++){
		if(j==pos){
			a[j]=a[n-1]; //最后一个元素替代最小值 
			cout<<a[j]<<" ";
		}else
			cout<<a[j]<<" ";
	} 
	return 0;
}

逆转顺序表中的元素

示例

输入:3 6 2 0 8
输出:8 0 2 6 3

思路

下标翻转输出即可。

具体实现

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a[100];
	int n=0,x;
	while(cin>>x){ //输入数组中的数 
		a[n++]=x;
		if(cin.get() == '\n') break;
	}
	for(int j=n-1; j>=0; j--){ //翻转下标输出 
		cout<<a[j]<<" ";
	}
	return 0;
}

删除顺序表中为x的元素

示例

输入
3 4 2 1 9
2

输出
3 4 1 9

思路

输入数组a和要删除的数b,遍历数组,若数组中的数与b不相同,则输出,否则继续循环。

具体实现

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a[100];
	int n=0,x,b;
	while(cin>>x){ //输入数组中的数 
		a[n++]=x;
		if(cin.get() == '\n') break;
	}
	cin>>b; //输入要删除的数 
	for(int i=0; i<n; i++){
		if(a[i]!=b) 
			cout<<a[i]<<" ";
	}
	return 0;
}

小结

数组的基本操作要熟练运用。