zoukankan      html  css  js  c++  java
  • 2.用类封装数组实现数据结构

      1 /**
      2 用类封装数组实现数据结构
      3 一个数据结构必须具有以下基本功能:
      4 
      5   ①、如何插入一条新的数据项
      6 
      7   ②、如何寻找某一特定的数据项
      8 
      9   ③、如何删除某一特定的数据项
     10 
     11   ④、如何迭代的访问各个数据项,以便进行显示或其他操作
     12 */
     13 
     14 public class MyArray{
     15     //定义一个数组
     16     private int[] intArray;
     17     //定义数组的实际有效长度
     18     private int elems;
     19     //定义数组的最大长度
     20     private int length;
     21 
     22     //默认构造一个长度为50的数组
     23     public MyArray() {
     24         elems = 0;
     25         length = 50;
     26         intArray = new int[length];
     27     }
     28 
     29     //构造函数,初始化一个长度为length的数组
     30     public MyArray(int length) {
     31         elems = 0;
     32         this.length = length;
     33         intArray = new int[length];
     34     }
     35 
     36     //获取数组的有效长度
     37     public int getSize() {
     38         return elems;
     39     }
     40 
     41     /**
     42     遍历显示元素
     43     */
     44     public void display() {
     45         for (int i = 0 ; i < elems ; i++ ) {
     46             System.out.print(intArray[i]+" ");
     47         }
     48         System.out.println();
     49     }
     50 
     51     /**
     52     添加元素,假设使用者不会添加重复元素,如果有重复元素后面也会受到影响
     53     */
     54     public boolean add(int value) {
     55      if(elems == length)
     56          return false;
     57      else {
     58         intArray[elems] = value;
     59         elems++;
     60      }
     61      return true;
     62     }
     63 
     64     /**
     65     根据下标获取元素,查找下标值在数组下标有效范围内,返回下标表示的元素,超过
     66     有效值,提示访问下标越界
     67     */
     68 
     69     public int get(int i) {
     70         if(i < 0 || i >= elems)
     71             System.out.println("访问下标越界");
     72         return intArray[i];
     73     }
     74 
     75     /**
     76     查找元素
     77     如果查找的元素存在则返回下标值,不存在就返回-1
     78     */
     79     public int find(int searchValue) {
     80         int i;
     81         for(i=0; i < elems; i++) {
     82             if(intArray[i] == searchValue) {
     83                 return i;
     84             }
     85         
     86         }
     87         return -1;
     88     }
     89     /**
     90     删除元素
     91     如果要删除的值不存在,直接返回false;否则返回true,删除成功
     92     */
     93     public boolean delete(int value) {
     94         int k = find(value);
     95         if(k == -1) {
     96             return false;
     97         } else {
     98             if (k == elems -1) {
     99                 elems--;
    100             } else {
    101                 for(int i = k; i < elems-1; i++) {
    102                     intArray[i] = intArray[i+1];
    103                 }
    104                 elems--;
    105             }
    106         }
    107         return true;
    108     }
    109 
    110     /**
    111     *    修改数据,修改成功返回true,失败返回false
    112     * @param oldValue 原值
    113     * @param newValue 新值
    114     */
    115     public boolean modify(int oldValue,int newValue) {
    116         int i = find(oldValue);
    117         if(i == -1) {
    118             System.out.println("需要修改的数据不存在");
    119             return false;
    120         } else {
    121             intArray[i] = newValue;
    122             return true;
    123         }
    124     }
    125 }
     1 public class MyArrayTest{
     2     public static void main(String[] args) {
     3         //创建自定义封装数组结构,数组大小为4
     4         MyArray array = new MyArray(4);
     5         //添加4个元素分别是1,2,3,4
     6         array.add(1);
     7         array.add(2);
     8         array.add(3);
     9         array.add(4);
    10         //显示数组元素
    11         array.display();
    12         //根据下标为0的元素
    13         int i = array.get(0);
    14         System.out.println(i);
    15         //删除4的元素
    16         array.delete(4);
    17         //将元素3修改为33
    18         array.modify(3, 33);
    19         array.display();
    20         //删除不存在的元素
    21         System.out.println(array.delete(100));
    22     }
    23 }

  • 相关阅读:
    为什么我的tomcat启动不起来?
    图解leetcode —— 128. 最长连续序列
    java实现单链表增删改查
    搞定java String校招面试题
    java反射快速入门
    java中线程安全,线程死锁,线程通信快速入门
    理清Java中try-catch-finally带return的执行顺序
    Java可变参数与Collections工具类使用了解
    HashMap常见面试题整理
    ArrayList去除重复元素(多种方法实现)
  • 原文地址:https://www.cnblogs.com/blogforvi/p/9444208.html
Copyright © 2011-2022 走看看