java设计顺序表类

设计能存储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版权协议,转载请附上原文出处链接和本声明。