PAT备考第一天,将会持续更新后续课程代码,纯原创,若有不正确的地方请指正。
//数组存储的线性表
public class test2 {
int MAXSIZE=100,size;//size为下标,MAXSIZE为默认数组大小
static Object Data[];
public void MakeEmpty(){
this.Data = new Object[MAXSIZE];
this.size=0;
}
//按值查找
public Object Find(Object X){
int index = 0;
for(int i=0;i<Data.length;i++){
if(X == Data[i]){
index = i;
break;
}
return index;
}
String s = "不存在该数值";
return s;
}
//插入
public void Insert(Object X,int i){
int j;
if(size==Data.length){
System.out.print("表满");
}
if(i<0 || i>size+1){
System.out.print("位置不合法");
}
for(j=size;j>=i;j--){
Data[j+1]=Data[j];
Data[i-1]=X;
size++;
}
}
//删除
public void Delete(int i){
int j;
if(i<0 || size<i){
System.out.print("不存在元素,"+i);
}
for(j=i;j<=size;j++){
Data[j-1]=Data[j];
size--;
}
}
//按序查找
public Object FindKth(int K){
if(K<0 || size<K){
System.out.print("不存在元素,"+K);
return null;
}
return Data[K];
}
//表长
public int Length(){
return size+1;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
test2 ad = new test2();
int i=0;
ad.MakeEmpty();
ad.Insert(11,0);
System.out.print("在线性表中插入11\n");
ad.Insert(25,0);
System.out.print("在线性表中插入25\n");
ad.Insert(33,0);
System.out.print("在线性表中插入33\n");
ad.Insert(77,0);
System.out.print("在线性表中插入77\n");
System.out.print("此时的线性表为");
for(i=0;i<Data.length;i++){
System.out.print(Data[i]+" ");
}
System.out.print("\n查找值为12的下标是:"+ad.Find(12));
System.out.print("\n下标为3的线性表的值是:"+ad.FindKth(3));
ad.Delete(2);
System.out.print("\n删除线性表中下标为2的元素\n");
ad.Delete(2);
System.out.print("删除线性表中下标为2的元素\n");
System.out.print("此时的线性表为:");
for(i=0;i<Data.length;i++){
System.out.print(Data[i]+" ");
}
}