今天用JAVA实现数据结构中的顺序表,思路就不重复了,大家仔细品味代码,不对之处还请各位不吝赐教。
第一步,在包里创建一个SqList类
SqList类代码如下:
public class SqList {
protected int[] data;
protected int last;//数组最后一位下标
public SqList() {
super();
}
public SqList(int i) {
super();
this.data = new int[i];
}
}
第二步,在包里创建Operation类
Operation类代码如下:
public class Operation {
//初始化表
public void InitList(SqList L,int values[]) {
L.last=values.length-1;
if(values.length >0) {
for(int i=0;i<values.length;i++) {
L.data[i]=values[i];
}
}
}
//打印表
public void PrintList(SqList L) {
int i;
for(i=0;i<L.last;i++) {
System.out.println(L.data[i]);
}
}
//清空表
public void ClearList(SqList L) {
L.data=null;
L.last=-1;
}
//获取表中某一位置数据
public int GetList(SqList L,int no) {
int Data = L.data[no-1];
return Data;
}
//获取表的长度
public int GetLength(SqList L) {
int length = L.last+1;
return length;
}
//插入元素
public int InsertList(SqList L,int data,int no) {
int tempNo = L.last;
if(no<0||no>=1024) {
System.out.println("插入的位置超出表的范围!");
return 0;
}else if(L.last>=1024) {
System.out.println("空间不足!");
return 0;
}
while(tempNo+1!=no-1) {
L.data[tempNo+1]=L.data[tempNo];
tempNo--;
}
L.data[no-1] =data;
L.last++;
return 0;
}
//删除元素
public int DeleteList(SqList L,int no) {
if(no<=0||no>L.last+1) {
System.out.println("你指定删除的位置超出了界限!");
return 0;
}else {
for(int i=no-1;i<L.last;i++) {
L.data[i]=L.data[i+1];
}
L.last--;
return 0;
}
}
//定位元素
public int LocateList(SqList L,int data) {
int i=0;
for(i=0;i<=L.last;i++) {
if(L.data[i]==data)
return i+1;
}
return -1;
}
}
第三步,在包里创建一个Test类
Test类代码如下:
public class Test {
public static void main(String[] args) {
//给表分配指定空间
SqList L = new SqList(15);
int values[]= {1,2,3,4,5,6,7,8,9,10};
Operation List = new Operation();
//初始化表
List.InitList(L, values);
//打印表
List.PrintList(L);
//输出表的长度
System.out.println(List.GetLength(L));
//获取表中某一位置的数据
System.out.println(List.GetList(L, 5));
//插入某个元素到指定位置
List.InsertList(L, 88, 3);
List.PrintList(L);
//删除指定位置元素
List.DeleteList(L, 3);
List.PrintList(L);
//定位某个元素的位置
System.out.println(List.LocateList(L, 8));
//清空表
List.ClearList(L);
List.PrintList(L);
}
}
测试结果均正确
新手可以自己尝试敲一遍,这样会有深刻的体会,最后不对之处还请各位不吝赐教。