编写算法:有一个非空整数顺序表L,其中元素值可能重复出现,设计一个算法,在最后一个最大值元素之后插入一个值为x的元素。
函数接口定义:
方法接口:
public void InsAfterOfMax (int x)
参数 x 表示要插入的元素。
裁判测试程序样例:
import java.util.Scanner;
class SqList {
int[] listElem = new int[100];
int curLen;
// 创建n个元素构造的顺序表
public SqList(int[] data)
{
if(data.length >= listElem.length) {
listElem = new int[data.length+1];
}
for (int i = 0; i < data.length; i++) {
listElem[i] = data[i];
}
curLen = data.length;
}
// 输出所有元素
public void display() {
int i;
for (i = 0; i < curLen; i++) {
System.out.print(listElem[i] + " ");
}
}
/* 请在这里填写答案 */
}
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
int[] data = new int[k];
for (int i = 0; i < k; i++)
data[i] = sc.nextInt();
SqList L = new SqList(data);
int e = sc.nextInt();
L.InsAfterOfMax(e);
L.display();
sc.close();
}
}
输入样例:
输入两行,第一行由n+1个整数组成,第1个数表示线性表的元素个数,紧接着n个整数 表示 线性表元素,第二行有1个整数,表示要插入的元素。例如:
5 1 3 7 5 2
4
输出样例:
输出结果只有一行,是插入后的线性表的所有元素。
1 3 7 4 5 2
输入样例:
5 1 3 7 7 5
4
输出样例:
1 3 7 7 4 5
答案:
public void InsAfterOfMax (int x){
int temp;
int max=0;
for(int i=0;i<curLen;i++)
if(listElem[i]>=listElem[max])
max=i;
curLen++;
for(int i=curLen-1;i>max+1;i--)
listElem[i] = listElem[i-1];
listElem[max+1] = x;
}