设计能存储int型元素的顺序表类SeqList。要求:
(1)顺序表的最大容量在创建顺序表对象时指定;
(2)实现append()操作:输入一组数,以0结束,将数据追加到表尾;
(3)实现void merge(L)操作:将两个升序表合并成降序表
(4)定义一个方法,实现向升序表中插入元素x,插入后依旧是升序表;
(5)打印出顺序表的所有元素。
import java.util.Scanner;
class sequlist{
int len;
int[] a;
public sequlist(int max) { a=new int[max]; }
public sequlist(int[] x) { a=x; len=x.length; }
//输入一组数,以0结束,将数据追加到表尾
public void append() {
System.out.print("请输入一组数据,以0结束:");
Scanner in=new Scanner(System.in);
int x=in.nextInt();
int i=0;
while(x!=0) {
a[i]=x; i++; x=in.nextInt();
}
len=i;
}
//打印出顺序表的所有元素
public void print() {
System.out.print("顺序表的内容:");
for(int i=0;i<len;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
//向顺序表中插入一个数据
public void insert() {
System.out.print("请输入要插入的数据及其位置:");
Scanner in=new Scanner(System.in);
int x=in.nextInt(); int n=in.nextInt();
for(int i=len+1;i>n;i--) {
a[i]=a[i-1];
}
a[n]=x; len++;
}
//将两个升序表合并成降序表
public sequlist merge(sequlist l) {
int i=this.len-1,j=l.len-1,k=0,lenm=this.len+l.len;
int[] c=new int[lenm];
while(k<=lenm) {
if(i!=-1 && j!=-1) {
if(this.a[i]>=l.a[j]) {
c[k]=this.a[i]; k++; i--;
}
else {
c[k]=l.a[j]; k++; j--;
}
}
else if(i==-1 && j==-1) break;
else {
if(i==-1) { c[k]=l.a[j]; k++; j--; }
if(j==-1) { c[k]=this.a[i]; k++; i--; }
}
}
return new sequlist(c);
}
//实现向升序表中插入元素x,插入后依旧是升序表
public void insert2() {
System.out.print("请输入要插入的数据:");
Scanner in=new Scanner(System.in);
int x=in.nextInt();
int i=0;
while(true) {
if(x>this.a[i]) i++;
else {
for(int j=len;j>i;j--) this.a[j]=this.a[j-1];
a[i]=x; len++; break;
}
}
}
}
//测试
class kaoshi{
public static void main(String[] args) {
sequlist s1=new sequlist(50);
s1.append(); s1.print();
s1.insert(); s1.print();
sequlist s2=new sequlist(50);
s2.append(); s2.print();
sequlist s3=s1.merge(s2); s3.print();
s1.insert2(); s1.print();
}
}
输出结果如下:
请输入一组数据,以0结束:1 3 6 7 9 0
顺序表的内容:1 3 6 7 9
请输入要插入的数据及其位置:5 2
顺序表的内容:1 3 5 6 7 9
请输入一组数据,以0结束:2 4 7 8 9 0
顺序表的内容:2 4 7 8 9
顺序表的内容:9 9 8 7 7 6 5 4 3 2 1
请输入要插入的数据:4
顺序表的内容:1 3 4 5 6 7 9
版权声明:本文为weixin_46764625原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。