数据结构一:顺序表

前言:接下来,我们将进行JAVA的顺序表,看看顺序表有那些知识点。

目录

1.顺序表的定义-----ArrayList:

1.2:顺序表的代码定义

 2:接口的实现   

2.1:增

2.1.1:添加元素到数组---默认是在数组最后新增           

    2.1.2:在指定的位置进行新增元素。

 2.2:删

2.2.1:删除第一次出现的关键字

 2.3:查

2.3.1:判断是否包含莫个元素

2.4:改

2.4.1:把pos位置的元素设为value

3:顺序表的构造

 4.ArraysLis常见操作

总结:


 

1.顺序表的定义-----ArrayList:

顺序表是用一段连续的物理地址的存储单位依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。因而我们也可以把顺序表叫做数组。


要知道顺序表的接口是怎么实现的,我们首先要知道,顺序表是怎么定义的,就如:“树高千丈,叶落归根。”

1.2:顺序表的代码定义

ebccabd3ac3e44ddbd8a5b5f6c988858.png

 知道怎么定义顺序表,那我们接下来了解一下,顺序表的接口


 2:接口的实现   

2.1:增

2.1.1:添加元素到数组---默认是在数组最后新增           

public void add(int data){
        //1.要看空间是否可以足够的空间
        //空间不足,重新开辟两倍的空间,并将数据拷贝过去。
        if(usedSize>elem.length){
            this.elem= Arrays.copyOf
                    (this.elem,this.elem.length*2);
        }
        //2.添加数据
        this.elem[usedSize]=data;
        //3.记录数组的元素个数增加
        this.usedSize++;

   }
}

    2.1.2:在指定的位置进行新增元素。

public void add(int pos,int data) throws IndexWrongExcepetion{
        //先判断数组是否满了
        if(isFull()){
            //开辟空间
          this.elem=Arrays.copyOf(
                    this.elem,this.elem.length*2);
        }
        //判断插入的位置是否正确
       if(pos<0||pos>usedSize){
           //这里抛出异常
       throw new IndexWrongExcepetion("插入的位置有错误");
       }
       //这里将pos后面的值后移,从尾巴开始
       for (int i = usedSize-1; i >=pos ; i--) {
           this.elem[i+1]=this.elem[i];
       }
       this.elem[pos]=data;
       this.usedSize++;
   }
}

be9265fc3565422cb7dffd67dd492555.png


 2.2:删

2.2.1:删除第一次出现的关键字

 public void remove(int key) throws  emptyException{
     //1.查顺序表为空不
        if(isEmpty()){//当usedSize为空的时候,顺序表为空
            System.out.println("该顺序表为空,无法删除");
            throw new emptyException("顺序表为空");
        }
        //2.先查找这个关键字存在不
       int flag=findKey(key);
       if(flag<0){
           System.out.println("查找此数不在顺序表中");
       }
       //删除此数
       for (int i = flag; i <usedSize-1 ; i++) {
           this.elem[i]=this.elem[i+1];
       }
       this.usedSize--;//记录有效元素的个数减
   }
   protected  int findKey(int key){
       for (int i = 0; i <usedSize ; i++) {
           if(this.elem[i]==key){
               return i;
           }
       }
       return -1;
   }

e1fc07390978437fbd76a0130f8d32ec.png


 2.3:查

2.3.1:判断是否包含莫个元素

e09f79b5dcbc458d8d861aaf55403d71.png

 查找该数组是否存在该元素的核心就是遍历该顺序表。


2.4:改

2.4.1:把pos位置的元素设为value

 public  void set(int pos,int value) throws  IndexWrongExcepetion{
      if(isEmpty()) {
          throw new IndexWrongExcepetion("该顺序表为空");
      }
        //要先判断给位置是否合法
       if(pos<0||pos>usedSize){
           throw  new IndexWrongExcepetion("给予的pos错误");
       }
       //更改元素值
       this.elem[pos]=value;
   }
}

清空顺序表:就是将usedSize置为空,这样无法进行打印。

既然知道了顺序表的接口是怎样的,来我们来学习一下ArraysList的使用。

3:顺序表的构造

ee42dcdcb2cc4b33a6f276306730612f.png


 4.ArraysLis常见操作

方法解释
boolean add(E e)在顺序表后面进行尾插e
void add(int index,E element)将e插到index位置上
E remove(int index)删除index位置元素
boolean remove(object 0)删除遇到第一个0
E get(int index)获取index位置元素
E set(int index,E element)将index位置元素改成E
void clear()清空
boolean contains(Object o)判断o是否在顺序表中
int indexof(Object o)返回第一个o所在下标
int lastindexof(Object o)

返回最后一个o所在

 

 

 

 

 

 

 

 

 

 

 

 

第一次调用add,默认开辟容量为10,调用不带参数的构造方法的时候,采用1.5倍扩容


总结:

以上就是我总结的顺序表的知识点,如有错误,期待各位铁子留言。

 

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值