• 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
     
  • 相关阅读:
    linux随记
    springboot-2
    netty-lean1
    nginx
    自定义启动器
    arrayList add
    Mybatis 转义符
    idea 闪退 但是启动的服务还在解决办法
    java 通过map根据list某个字段进行合并
    java list的深拷贝
  • 原文地址:https://www.cnblogs.com/xxbbtt/p/7561711.html
Copyright © 2020-2023  润新知