シーケンステーブル(SeqList)Java実装


実装された操作は、
  • は、データ(addData)をシーケンステーブルの最後に追加する.
  • 順序表に位置を指定してデータを追加する(insertDataByLoc);
  • は、シーケンステーブルで指定されたデータ(deleteDataByData)を削除する.
  • 順序表で指定された位置のデータを削除する(deleteDataByLoc).
  • 指定された位置のデータ(findDataByLoc)を検索する.
  • は、指定データの位置を検索する.
  • 補助的な実装の操作は、
  • は、シーケンステーブルが空かどうかを判断する(isEmpty().
  • は、シーケンステーブルがいっぱいかどうかを判断する.
  • 下記は実現コード(SeqList)です.
    /**
     *                    
     *           , :
     *         deleteDataByData(Type):            。
     *         findLocationOfData(Type):                   。
     */
    public class SeqList  {
        /**
         *       
         */
        private static final int MAXSIZE = 100;//        
        private int size;//        
        Type[] dataList;//        Type    
    
        /**
         *       
         */
        public SeqList(){
            dataList = (Type[]) new Object[MAXSIZE];
            this.size = 0;
        }
    
        /**
         *            (   )
         * @param dataList:     
         */
        public SeqList(Type[] dataList){
            this.dataList = dataList;
            this.size = dataList.length;
        }
    
        /**
         *           
         * @param size:     
         */
        public SeqList(int size){
            dataList = (Type[]) new Object[size];
            this.size = 0;
        }
    
        /**
         *         
         * @return size:     
         */
        public int getSize(){
            return this.size;
        }
    
        /**
         *      
         */
        public void clear(){
            this.dataList = null;
            this.size = 0;
        }
    
        /**
         *            data
         * @param data:      
         * @return -1:    ,    
         *          0:    
         */
        public int addData(Type data){
            if (this.size == MAXSIZE) {//           
                //System.out.println("     !");
                return -1;
            }
            dataList[size++] = data;
            //     ,             。
            //           1
            return 0;
        }
    
        /**
         *           data
         * @param data:      
         * @param loc:     
         * @return -1:           ,    
         *          0:    
         */
        public int insertDataByLoc(Type data, int loc){
            if ((size == MAXSIZE)){
                //System.out.println("       !");
                return -1;
            }else if ((loc >= MAXSIZE)){
                //System.out.println("        !    " + MAXSIZE + "      !");
                return -1;
            } else if (loc < 0){
                //System.out.println("         !       !");
                return -1;
            } else if (loc >= size){
                addData(data);
                //System.out.println("                      !
    !"); return 0; }else if (size == 0) { dataList[0] = data; return 0; }else { for (int i = size-1; i >= loc; i--) { // loc dataList[i+1] = dataList[i]; } dataList[loc] = data;// this.size += 1;// 1 return 0; } } /** * , * @param data: * @return i: * -1: */ public int deleteDataByData(Type data){ for (int i = 0; i < this.size; i++) { if (dataList[i].equals(data)) { deleteDataByLoc(i); return i; } } return -1; } /** * * @param loc: * @return */ public Type deleteDataByLoc(int loc){ Type data = findDataByLoc(loc);// loc if (data == null)// return null; for (int i = loc; i < this.size; i++) { // loc dataList[i] = dataList[i+1]; } this.size --;// 1 return data; } /** * * @param loc: * @return */ public Type findDataByLoc(int loc){ if ((loc > this.size) || (loc < 0) || (dataList == null)) return null; return dataList[loc]; } /** * * @param data: * @return loc: */ public int findLocationOfData(Type data){ for (int i = 0; i < this.size; i++) { // if (dataList[i].equals(data)) { return i; } } return -1; } /** * * @return */ public boolean isEmpty(){ // , if(dataList == null) ? // , !!! // if ((dataList == null) || (dataList.length == 0)) // return true; // return false; for (int i = 0; i < dataList.length; i++) { if (dataList[i] != null) return false; } return true; } /** * */ public void display(){ for (int i = 0; i < this.size; i++) { System.out.print(" " + dataList[i]); } } }
     以下はこのコードのテストコード(SeqListTest)です.
    public class SeqListTest {
    
        private int[] dataList = new int[10];
        private static final int SIZE = 20;
        private static final int MULTI = 3;
    
        /**
         *     main()   
         * @param args
         */
        public static void main(String[] args) {
            SeqListTest s = new SeqListTest();
            s.run();
        }
    
        /**
         *     
         */
        public void run(){
    
            //        
            for (int i = 0; i < dataList.length; i++) {
                dataList[i] = (i+1);
            }
    
    
            SeqList seqDataList = new SeqList<>();
            if (seqDataList.isEmpty())//   isEmpty()   
                System.out.println("     。");
            for (int i = 0; i < SIZE; i++) {//   addData()   
                seqDataList.addData((i * MULTI));
            }
    
            //    findDataByLoc()   
            display(seqDataList);
    
            //   insertDataByLoc()   
            System.out.println("    -3      :10");
            seqDataList.insertDataByLoc(10,-3);
            System.out.println("    3      :10");
            seqDataList.insertDataByLoc(10,3);
            System.out.println("    23      :10");
            seqDataList.insertDataByLoc(10,23);
            System.out.println("    103      :10");
            seqDataList.insertDataByLoc(10,103);
            display(seqDataList);
    
            //   deleteDataByData()   
            System.out.println("    :3");
            seqDataList.deleteDataByData(3);
            System.out.println("    :5");
            seqDataList.deleteDataByData(5);
            display(seqDataList);
    
            //   deleteDataByLoc()   
            System.out.println("    :-6    ");
            seqDataList.deleteDataByLoc(-6);
            System.out.println("    :6    ");
            seqDataList.deleteDataByLoc(6);
            System.out.println("    :26    ");
            seqDataList.deleteDataByLoc(26);
            display(seqDataList);
    
            //   findLocationOfData()   
            System.out.println("    :15");
            seqDataList.deleteDataByData(15);
            System.out.println("    :105");
            seqDataList.deleteDataByData(105);
            display(seqDataList);
    
            //   findLocationOfData()   
            System.out.println("    :10    :" + seqDataList.findLocationOfData(10));
            System.out.println("    :-1    :" + seqDataList.findLocationOfData(-1));
    
            //   clear()   
            seqDataList.clear();
            display(seqDataList);
        }
    
        private void display(SeqList seqDataList){
            System.out.println("        :");
            for (int i = 0; i < seqDataList.getSize(); i++) {
                System.out.print("  " + seqDataList.findDataByLoc(i));
            }
            System.out.println("
    :" + seqDataList.getSize()); System.out.println(); } }
     長い間コードを書いていませんので、かなり乱れています.ご了承ください.