Java——数据结构(顺序表)

这是一个顺序表的类,初始化的时候就已经确定了表的长度,之后不能添加数据,因为使用的是数组存储的数据,不过这个表的类型是泛型的。

public class List {
    
    private  Object[] data;
    private int length;
    
    /*
     *新建一个线性表 
     */
    public List(Object...objects) {
        this.data = objects;
        for(Object object:objects) {
        this.length++;
        }    
    }
    
    /*
     * 若线性表为空,返回true 否则返回false
     */
    public boolean ListEmpty() {
        if(this.data == null) {
            return true;
        }else {
            return false;
        }
    }
    
    /*
     * 将当前线性表清空
     */
    public  boolean ClearList() {
        this.data = null;
        this.length = 0;
        return true;
    }
    
    /*
     * 将返回线性表的第i个位置的元素值
     */
    public Object GetElem(int i) {
        return data[i];
    }
    
    /*
     * 在表从找到与e值相等的元素,返回该元素表示成功,返回0表示失败
     */
    public Object LocateElem(Object e) {
        int i = 0;
        for(Object object:this.data) {
            if(object == e) {
                return i;
            }
            i++;
        }
        return 0;
    }
    
    /*
     * 在表中的第i个位置插入新元素e
     */
    public Boolean ListInsert(int i, Object e) {        
        if(this.length == i) {
            //如果超过表的长度 返回错误
            return false;
        }else {
            for(int j = this.length - 1; j > i; j--) {
                data[j] = data[j-1] ;
            }
            data[i] = e;
            return true;
        }    
    }
    /*
     * 返回表的长度
     */
    public int length() {
        return this.length;
    }
    
    /*
     * 删除表的第i个位置
     */
    public Boolean ListDelete (int i) {
        if(this.length == i) {
            //如果超过表的长度 返回错误
            return false;
        }else {
            for(int j = i; j < this.length - 1; j++) {
                data[j] = data[j+1] ;
            }
            return true;
        }    
    }
    
    public static void main (String[] args) {
        List list1 = new List(1,"字",2,"123");
        System.out.print("现在的表:");
        for(int i = 0; i < list1.length; i++) {
            System.out.print(list1.GetElem(i) + ",");
        }
        System.out.println();
        System.out.print("这个是空的吗");
        System.out.println(list1.ListEmpty());
        System.out.print("1的位置在");
        System.out.println(list1.LocateElem(1));
        System.out.print("字的位置在");
        System.out.println(list1.LocateElem("字"));
        System.out.print("在2的位置添加一个1");
        System.out.println(list1.ListInsert(2, 1));
        System.out.print("现在的表:");
        for(int i = 0; i < list1.length; i++) {
            System.out.print(list1.GetElem(i) + ",");
        }
        System.out.println();
        System.out.print("把1的位置的数据删掉");
        System.out.println(list1.ListDelete(1));
        System.out.print("现在的表:");
        for(int i = 0; i < list1.length; i++) {
            System.out.print(list1.GetElem(i) + ",");
        }
        System.out.print("清空表:");
        list1.ClearList();
        System.out.print("这个是空的吗");
        System.out.println(list1.ListEmpty());
    }    
}

main方法的输出结果是:

现在的表:1,我,2,123,
这个是空的吗false
1的位置在0
字的位置在0
在2的位置添加一个1true
现在的表:1,我,1,2,
把1的位置的数据删掉true
现在的表:1,1,2,2,清空表:这个是空的吗true
 
原文地址:https://www.cnblogs.com/xxbbtt/p/7561711.html