数据结构------向数组中添加元素
//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就是最开始的位置,调用方法让其他元素向后移即可.这就是我在学习中的心得体会.

浙公网安备 33010602011771号