数据结构代码--线性表的顺序存储结构

/**
 * 线性表的顺序存储结构
 */
public class SqList {
    int[] data;
    int length;

    public SqList(int leng, int length) {
        this.data = new int[leng];
        this.length = length;
    }

    public int[] getData() {
        return data;
    }

    public void setData(int[] data) {
        this.data = data;
    }

    public int getLength() {
        return length;
    }

    public void setLength(int length) {
        this.length = length;
    }

    @Override
    public String toString() {
        return "SqList{" +
                "data=" + Arrays.toString(data) +
                ", length=" + length +
                '}';
    }

    //初始化顺序表
    public void initList() {
        for (int i = 0; i < this.length; i++) {
            this.data[i] = 99;
        }
    }

    //根据给出的位序获取数据元素
    public int getElem(int offset) {
        //如果给出的位序小于1或者大于当前表长度 报错
        if (offset < 1 || offset > this.length) {
            return 0;
        }
        int elem = this.data[offset];
        return elem;
    }

    //根据给出的位序和指定的元素插入元素
    public int insertElem(int offset, int value) {
        //如果给出的位序小于1或者大于当前表长度 报错
        if (offset < 1 || offset > this.length) {
            return 1;
        }
        if (offset <= this.length) {
            for (int k = this.length - 1; k >= offset - 1; k--) {
                this.data[k + 1] = this.data[k];
            }
        }
        this.data[offset - 1] = value;
        this.length++;
        return 0;
    }

    //根据给出的位序删除元素
    public int deleteElem(int offset) {
        if (offset < 1 || offset > this.length) {
            return 1;
        }
        if (offset < this.length) {
            for (int k = offset - 1; k < this.length; k++) {
                this.data[k] = this.data[k + 1];
            }

        }
        this.length--;
        return 0;
    }

}
/**
 * 有关顺序存储线性表的操作
 * 初始化
 * 取元素
 * 插入元素
 * 删除元素
 */
public class SqListOper {
    public static void main(String[] args) {
        //定义一个顺序表
        SqList sqList = new SqList(10, 5);

        //顺序表的初始化
        sqList.initList();

        //根据位序取数据
        int elem = sqList.getElem(4);
        System.out.println(elem);
        System.out.println(sqList);

        //根据位序和指定元素插入数据
        int i = sqList.insertElem(3, 11);
        System.out.println(i);
        System.out.println(sqList);

        //根据位序删除元素
        int i1 = sqList.deleteElem(2);
        System.out.println(i1);
        System.out.println(sqList);

    }
}

线性表顺序存储的初始化/取指定元素/指定位序插入指定元素/指定位序删除元素代码。

因为顺序存储的内存地址是连续的,所以查找元素的时间复杂度为O(1),这种结构称之为随机存取结构。

在元素的插入和删除操作中,平均时间复杂度都是O(n),所以顺序存储的线性表不适合数据变动较多的场景,适合一次写入多次查找。

暂时记录到这里--------------------------------------------------------------------------------------------------

你可能感兴趣的:(数据结构(java),数据结构,散列表,java)