数据结构------向数组中添加元素

//size是数组的第一个空元素的定位符。
	//向所有元素后添加一个新元素
	public void addLast(int e) {
//		if(size==data.length)  {
//			throw new IllegalArgumentException("AddLast failed. Array is full.");
//		}  
//		data[size]=e;
//		size++;
		add(size,e);
	} 
	//在所有元素前添加一个新元素
	public void addFirst(int e) {
		add(0,e);
	}
	//在第index个位置插入一个新元素e
	public void add(int index,int e) {
		if(size==data.length)  {
			throw new IllegalArgumentException("Add failed. Array is full.");
		}
		if(index<0||index>size) {
			throw new IllegalArgumentException("Add failed. Require index>=0 and index<=size.");
		}
		for(int i=size-1;i>=index;i--) {
			data[i+1]=data[i];
		}
			data[index]=e;
			size++;
		}
	}

总结:首先,size指向的是数组的第一个位置,也就是索引为0的地方,先说向所有元素后添加一个元素,按照addLast()方法,如果size的长度等于数组的长度,则满了,不能再添加了,抛出个异常,反之,如上图size指向了索引为4这个位置,则data[4]=e,size继续指向5那个位置.

接着我们来说在第index个位置插入一个新元素e,还是先判断size和数组长度的关系,其次判断索引下标必须是大于0的,并且必须小于等于size,保证数组的紧密排列,再来个for循环,让插入位置后的所有元素都后移一位,然后size++,i=size-1表示的就是最后一个元素,i>=index就是所插入位置的元素,data[i+1]就是size处也就是最后那个元素向后移动一位的位置,把data[i]也就是最后一个元素的值赋值给data[i+1]也就是每个元素都向后移动一位,直到将data[index]的值往后移动一位腾出一个空间放你所要插入的那个元素e,因为多了一个元素所以size++往后移动一位.如上图,size就指向了索引为5的位置了。而向所有元素前或后添加元素就直接调用add()方法就可以了,size就是所有元素后的那个位置,0就是最开始的位置,调用方法让其他元素向后移即可.这就是我在学习中的心得体会.

 

posted @ 2019-08-13 15:06  小帅学java  阅读(52)  评论(0)    收藏  举报