我是靠谱客的博主 时尚玉米,这篇文章主要介绍动态数组1,现在分享给大家,希望可以做个参考。

动态数组实现线性表

什么是线性表:

线性表,由零个或多个数据元素组成的有限序列。就像排队一样,只有第一个由唯一的后继,最后一个有唯一的前驱,其他的都有唯一的前驱和后继。

线性表的顺序存储结构

指的是用一段地址连续的存储单元依次存储线性表的数据元素。对线性表进行增删该查。
用顺序存储结构实现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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(102)

评论列表共有 0 条评论

立即
投稿
返回
顶部