概述
动态数组实现线性表
什么是线性表:
线性表,由零个或多个数据元素组成的有限序列。就像排队一样,只有第一个由唯一的后继,最后一个有唯一的前驱,其他的都有唯一的前驱和后继。
线性表的顺序存储结构
指的是用一段地址连续的存储单元依次存储线性表的数据元素。对线性表进行增删该查。
用顺序存储结构实现List;
成员变量:
private static int DEFULT_SIZE=10;
private E[] data; //存储数据元素的容器
private int size; //线性表的有效元素的个数
构造函数:
1 默认无参的
2 有参的构造函数
public ArrayList(){
this.data = (E[]) new Object[DEFULT_SIZE];
this.size = 0;
}
public ArrayList(int capacity){
this.data = (E[]) new Object[capacity];
this.size=0;
}
添加元素:
在指定角标处添加元素e,首先判断是否角标是否越界,然后在判断是否容器已经满了,如果满了,就需要进行扩容(扩容为原来的两倍)。
public void add(int index, E e) {
if(index<0||index>size){
throw new ArrayIndexOutOfBoundsException("add添加元素异常");
}
if(size==data.length){
resize(2*data.length);
}
for(int i=size-1;i>= index;i--){
data[i+1]=data[i];
}
data[index]=e;
size++;
}
删除元素:
删除也需要先进行对角标越界,进行判定,然后进行删除指定角标处的元素,需要把删除角标处的后一个向前覆盖,再删除后进行,判定是否进行缩容,缩小为原来的一半。
public E remove(int index) {
// TODO Auto-generated method stub
if(index<0||index>size-1){
throw new ArrayIndexOutOfBoundsException("remove角标越界");
}
E e = get(index);
for(int i=index+1;i<=size-1;i++){
data[i-1] = data[i];
}
size--;
//判断是否缩容
if(data.length > DEFULT_SIZE&&size <= data.length/4){
resize(data.length/2);
}
return e;
}
*他的增加和删除比较麻烦。
最后
以上就是时尚玉米为你收集整理的动态数组1的全部内容,希望文章能够帮你解决动态数组1所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复