数据结构关于顺序表的操作与应用的实现(java语言版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
package line;
//顺序表的基本类
publicclass Line {
//属性-数据特征
privateint a[]; //存储数据privateint n; //数据长度//方法-实现功能
publicint[] getA() {
return a;
}
publicvoid setA(int[] a) { this.a = a;
}
publicint getN() {
return n;
}
publicvoid setN(int n) {
this.n = n;
}
}
package line;
import java.util.Scanner;
//基本算法类
publicclass Algorithm {
/*
* 初始化线性表:建立线性表的初始结构,建空表求表的长度:求表中元素的个数。
按序号取元素:取出表中序号为i的元素。
按值查询:取出指定值为x的元素。
插入元素:在表L的第i个位置上插入值为x的元素。
删除元素:删除表L中序号为i的元素。
判空表:判断表是否为空返回布尔值。
表置空:将表中的元素个数设置为0。
*/
//初始化线性表:建立顺序表的初始结构,建空表
publicvoid line_initial(Line L){
//给L中的a一维数组分配空间
int b[]=newint[50];
L.setA(b);
L.setN(0);
}
//输入数据的方法
publicvoid line_input(Line L){
Scanner sc=new Scanner(System.in);
int n;
System.out.println("请输入需要的数据个数:");
n=sc.nextInt();
for(int i=0;i L.getA()[i]=(int)(Math.random()*50); } //随机生成的数据是放到顺序表的L.a中,现在L.n L.setN(n); } //输出 publicvoid line_output(Line L){ for(int i=0;i System.out.print(L.getA()[i]+" "); } } //冒泡排序 publicvoid line_bubb(Line L){ int i,j; int t; for(i=0;i for(j=0;j if(L.getA()[j] >L.getA()[j+1]){ t=L.getA()[j]; L.getA()[j]=L.getA()[j+1]; L.getA()[j+1]=t; } } } } //选择排序 publicvoid line_selcet(Line L){ int i,j,min; int t; for(i=0;i min=i; for(j=i;j if(L.getA()[min] >L.getA()[j]){ min=j; } } if(min != i){ t=L.getA()[i]; L.getA()[i]=L.getA()[min]; L.getA()[min]=t; } } } //在顺序表的指定位置插入值 publicvoid line_in(Line L,int s,int x){ int i; //1移动数据,把插入位置空出 for(i=L.getN()-1;i>=s;i--){ L.getA()[i+1]=L.getA()[i]; } //2插入 L.getA()[s]=x; //修改数据个数 L.setN(L.getN()+1); } //有序插入方法的重写 publicvoid line_in(Line L,int x){ int i; //找 //空 //给哨兵一个初始值 i=L.getN()-1; while(i>=0 && x //后移 L.getA()[i+1]=L.getA()[i]; i--; //-1 } //插入25 i+1 L.getA()[i+1]=x; //+1 L.setN(L.getN()+1);; } //指定位置的删除 publicvoid line_del1(Line L,int s){ int i; for(i=s;i L.getA()[i]=L.getA()[i+1]; } //数量-1 L.setN(L.getN()-1); } //给定值的删除要求有返回值 false(删除失败) true(删除成功) publicboolean line_del2(Line L,int x){ int i; boolean f=false; //直接赋值为false,认为删除失败 for(i=0;i if(x == L.getA()[i]){ break; }