我是靠谱客的博主 时尚玉米,最近开发中收集的这篇文章主要介绍动态数组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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部