数据结构顺序表的简单实现

import java.util.Arrays;

public class SequenceList {
    private int size;
    private final static int Default_size=5;
    private   int[] elements;

    public SequenceList() {
        this.elements = new int[Default_size];
    }
    public SequenceList(int length) {
        if(length<0){
           throw new IllegalArgumentException("传入的数组大小不合法");
        }
        else if(length==0){
            this.elements = new int[Default_size];
        }
        else {
            this.elements = new int[length];
        }
    }
   // 新增元素,默认在数组最后新增
        public void add(int data) {
            if(isFull()){
                grow();
            }
         elements[size++]=data;
        }
        private boolean isFull(){
            return size== elements.length;
        }
        private void grow(){
            elements= Arrays.copyOf(elements,2*elements.length);
        }
    public boolean contains(int toFind) {
        for (int i = 0; i < size; i++) {
            if(elements[i]==toFind){
                return true;
            }
        }
        return  false;
    }
    // 查找某个元素对应的位置
    public int indexOf(int toFind) {
        for (int i = 0; i < size; i++) {
            if(elements[i]==toFind){
                return i;
            }
        }
        return -1;
    }
    // 获取 pos 位置的元素
    public int get(int pos) {
        checkPos(pos);
        return elements[pos];
    }
    // 给 pos 位置的元素设为 value
    public void set(int pos, int value) {
        checkPos(pos);
        elements[pos]=value;
    }
    private void checkPos(int pos){
        if(pos<0||pos>size-1)
            throw new ArrayIndexOutOfBoundsException("pos的位置不合法 pos="+pos);
    }
    // 在 pos 位置新增元素
    public void add(int pos, int data) {
      if(isFull()){
          grow();
      }
      if(pos<0||pos>size){
          System.out.println("插入的位置不合法 pos:"+pos);
      }else{
              for (int i = size; i > pos; i--) {
                  elements[i] = elements[i-1];
                 }
              elements[pos]=data;
          size++;
       }
    }
    //删除第一次出现的关键字key
    public void remove(int toRemove) {
        if(contains(toRemove)){
           int pos=indexOf(toRemove);
              for (int i = pos; i <size - 1; i++) {
              elements[i] = elements[i + 1];
             }
         size--;
     }
  else {
    System.out.println("数组中未找到value="+toRemove);
  }
}
    // 获取顺序表长度
    public int size() {
        return this.size;
    }
    // 清空顺序表
    public void clear() {
        this.size=0;
    }
    // 打印顺序表
    public void display() {
        StringBuilder sb=new StringBuilder();
        sb.append("[");
        for (int i = 0; i < size; i++) {
            sb.append(elements[i]);
            if(i!=size-1){
                sb.append(",");
            }
        }
        sb.append("]");
        System.out.println(sb);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jhpan666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值