zoukankan      html  css  js  c++  java
  • 模拟数组

    package mo_ni_shu_zu;
    /*定义一个数组类*/

    public class Array {

    int len; //数组长度
    int cnt; //有效元素的个数
    int[] arr;
    int remove_value; //记录删除的元素的值

    public Array(int len) {
    cnt = 0; //有效元素个数刚开始为0,以cnt为下标的位置无值
    this.len = len;
    arr = new int[len]; //初始化数组,长度为len,值都为0
    }


    package mo_ni_shu_zu;
    /*定义一个数组类*/
    
    public class Array {
    
        int len; //数组长度
        int cnt; //有效元素的个数
        int[] arr;
        int remove_value; //记录删除的元素的值
    
        public Array(int len) {
            cnt = 0;  //有效元素个数刚开始为0,以cnt为下标的位置无值
            this.len = len;
            arr = new int[len];  //初始化数组,长度为len,值都为0
        }
    
    
        /*判断数组是否为空*/
        public boolean is_empty() {
            if (cnt == 0)
                return true;
            else
                return false;
        }
    
        /*输出数组*/
        public void show_Array() throws EmptyException{
    
            if(is_empty()){
                throw new EmptyException("数组为空,无法输出");
            }else{
                for(int i = 0;i < cnt;i++){
                    System.out.println(arr[i]);
                }
            }
        }
    
        /*判断数组是否满*/
        public boolean is_full(){
            if (cnt == len)
                return true;
            else
                return  false;
        }
    
        /*数组追加元素*/
        public boolean append_Array (int value) throws FullException {
    
            if (is_full()) {
                throw new FullException("数组已满,无法追加");
            }else{
                arr[cnt] = value;
                cnt++;
                return true;
            }
        }
    
        /*在某个特定位置添加元素*/
        public boolean insert_Array(int pos,int value) throws FullException {
    
            if (is_full()) {
                throw new FullException("数组已满,无法添加");
            }else{
                /*例如要在第三个位置添加,实际上是在下标为2的地方添加,
                  从最后一个位置的元素到下标为2的元素,依次向后移一位,
                  先移后添加
                */
                for(int i = cnt;i > pos - 1; i--){
                    arr[i] = arr[i-1];
                }
                arr[pos - 1] = value;
                cnt++;  //添加后数组元素多一个,故++
                return true;
            }
        }
    
        /*删除某个位置元素*/
        public boolean delect_Array(int pos)throws EmptyException{
    
            if(is_empty()) {
                throw new EmptyException("数组为空,无法删除");
            }else if(pos < 1 || cnt < pos){  //若要删除的位置小于1或者大于数组有效元素的个数,则报错
                return false;
            } else{
                /*同在某个位置添加元素,不同的先将元素删除,再把后面位置的元素依次向前移一位*/
                remove_value = arr[pos - 1];
                if(pos < cnt){
                    for(int i = pos;i < cnt;i++) {
                        arr[i - 1] = arr[i];
                        if (i == cnt - 1) {
                            cnt--;
                        }
                    }
                }
            }
            return true;
        }
    
        /*数组元素倒置,此方法适用于有效元素个数为奇数或偶数*/
        public void inversion_Array(){
    
            int i = 0;
            int j = cnt - 1;  //最后一个元素的下标为cnt-1
            int t;
            while(i < j){
                t = arr[i];
                arr[i] = arr[j];
                arr[j] = t;
                i++;
                j--;
            }
        }
    
        /*使用冒泡排序对数组进行排序(从小到大)*/
        public void sort_Array(){
    
            int t;
            for(int i = cnt - 1;i > 0;i--){
                for(int j = 0;j < i;j++){
                    if(arr[j] > arr[j+1]){
                        t = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = t;
                    }
                }
            }
        }
    }
  • 相关阅读:
    设计模式学习总结:(7)工厂方法模式和抽象工厂模式
    设计模式学习总结:(6)桥模式
    设计模式学习总结:(5)装饰模式
    设计模式学习总结:(4)观察者模式
    设计模式学习总结:(3)策略模式
    设计模式学习总结:(2)模板方法模式
    [算法总结]DFS(深度优先搜索)
    [总结]拓扑排序
    [总结]树与图的遍历
    [算法总结]康托展开Cantor Expansion
  • 原文地址:https://www.cnblogs.com/gezi1007/p/12778304.html
Copyright © 2011-2022 走看看