zoukankan      html  css  js  c++  java
  • 线性表简述

    一、简单实现增,删,改、查

    package datatructs;
    /**
     * 表接口
     */
    public interface LinearList {
        
        boolean isEmpty();//判断线性表是否为空
        int size();   //返回线性表的大小
        Object get(int index); //获取指定索引的元素
        Object set (int index,Object element);//修改指定索引的元素
        
        boolean addForIndex(int index,Object element);//在指定索引位置添加的元素
        
        boolean add(Object element);//在线性表最后添加元素
        
        Object remove(int index); //移除指定位置的元素
        
        void clear(); //清空线性表
        
        
        
        
    }

    实现类

    package datatructs;
    
    public class LinearListImpl implements LinearList {
        //线性表
        private Object [] sList;
        //线性表大小
        private int size;
        
        
        
    
        public LinearListImpl(int length) {
            if(length<0){
                sList=new Object[10];
            }else{
                sList=new Object[length];
            }
        }
        
        
    
        public LinearListImpl() {
            //设置默认为10个大小
            this(10);
        }
    
    
        /*
         * 检查线性表是否为空
         */
        @Override
        public boolean isEmpty() {
            //如果size=0就说明为空 true,不为0就为false
            return size==0;    
        }
        /*
         * 返回线必表的大小
         */
        @Override
        public int size() {
        
            return size;
        }
    
            /*
             * 返回指定索引位置的元素
             */
        @Override
        public Object get(int index) {
            
            return sList[index];
        }
        
        
        
    
        @Override
        public Object set(int index, Object element) {
            //得到原来位置上的元素
            Object old=sList[index];
            //修改
            sList[index]=element;
            //返回原来的值
            return old;  
        }
        /*
         * 检查在指定位置添加元素的,索引是否在范围内
         */
        public void checkIndexForAdd(int index){
            if(index<0 || index>size){
                throw new IndexOutOfBoundsException("要插入的索引不在表的范围内");
            }
        }
        /*
         * 检查在指定索引是否在范围 内
         */
        public void checkIndex(int index){
            if(index>size){
                throw new IndexOutOfBoundsException("要操作的索引不在表的范围内");
            }
        }
    
    
        
            /*
             *在指定索引位置添加     
             */
        @Override
        public boolean addForIndex(int index, Object element) {
            checkIndexForAdd(index);
            
            //判断线性表是否还有空间
            if(size()==sList.length){
                //如果为0
                if(sList.length==0){
                    //初始化为10
                    sList=new Object[10];
                }else{
                    //不为空就+1
                    //临时表
                    Object [] tmp=sList;
                    //重新+1 
                    this.sList=new Object[sList.length+1];
                    //将元素复制过来
                    for (int i = 0; i < size; i++) {
                        sList[i]=tmp[i];
                    }
                }
            }
            //向后移一位
            for(int i=size-1;i>=index;i--){
                sList[i]=sList[i+1];
            }
            //插入元素
            sList[index]=element;
            size++;
            return true;
        }
        /*
         * 在最后添加元素
         */
        @Override
        public boolean add(Object element) {
            //调用 上面的添加方法
             return addForIndex(size,element);
            
        }
        /*
         * 删除指定索引的元素
         */
        @Override
        public Object remove(int index) {
            checkIndex(index);
            for(int i=index;i<size-1;i++){
                sList[i]=sList[i+1];
            }
            sList[--size]=null;
            //返回要移除的元素
            return sList[index];
        }
    
        @Override
        public void clear() {
            for (int i = 0; i < size; i++) {
                //将每个值设置为null
                sList[i]=null;
            }
            //将线性表大小设置0
            size=0;
    
        }
    
    }

    测试

    package datatructs;
    
    public class Demo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            LinearListImpl ll=new LinearListImpl();
            System.out.println("是否为空:  "+ll.isEmpty());
            System.out.println("大小:"+ll.size());
            ll.add("张三");
            ll.add("李四");
            ll.addForIndex(2, "王五");
            
            System.out.println(ll.set(2, "赵六"));
            
            
            
            ll.remove(2);
            for (int i = 0; i < ll.size(); i++) {
                System.out.print("	第"+i+" 元素 :"+ll.get(i));
            }
            
            ll.clear();
            System.out.println("元素大小:"+ll.size());
            System.out.println("是否为空:  "+ll.isEmpty());
        }
    
    }
  • 相关阅读:
    MySql常用函数积累
    常用的linux命令
    Java replace和replaceAll
    json常用操作
    import { Subject } from 'rxjs/Subject';
    applicationCache
    mongo
    Mongodb更新数组$sort操作符
    Mongodb更新数组$pull修饰符
    使用forever运行nodejs应用
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4471360.html
Copyright © 2011-2022 走看看