0
点赞
收藏
分享

微信扫一扫

JAVA版浙江大学-数据结构-顺序存储的线性表实现代码

辰鑫chenxin 2022-01-04 阅读 55

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]+" ");
		}
	}
举报

相关推荐

0 条评论