数据结构关于顺序表的操作与应用的实现(java语言版)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

相关文档
最新文档