学习数据结构与算法(使用Java)遇到问题(未解决):给栈写一个在指定位置插入目标元素的函数——使用eclipse工具
一、问题描述
对我写的栈这个类想给它写一个插入函数,用了两种方式,为什么第一种方式输出时不对的,插入不成功?
主类代码:
public class Main {
public static void main(String[] agrs) {
//创建一个可变数组
MyArray ma = new MyArray();
//获取长度
int size = ma.size();
ma.show();
System.out.println("现在可变数组的长度是:" + size);
//在数组中添加一个元素
ma.add(7);
//输出长度
size = ma.size();
ma.show();
System.out.println("现在可变数组的长度是:" + size);
ma.insert(0, 6);//下标0处位置插入目标元素6
ma.show();
ma.insert(2, 8);//下标2处位置插入目标元素8
ma.show();
}
}
- 在循环里按顺序把小于目标元素的值复制给旧数组,再插入目标元素,再将大于目标数组的值复制给新数组。(不成功)
输出错误的插入函数代码:
//插入一个元素到指定位置
public void insert(int index , int element) {
//创建一个新数组
int[] newarr = new int[elements.length+1];
for(int i = 0; i < elements.length ; i++) {
//目标位置之前的元素
if(i<index) {
newarr[i] = elements[i];
}
else if(i==index) {
newarr[i] = element;
}
// 目标位置之后的元素
else {
newarr[i+1] = elements[i];
}
}
// newarr[index] = element;
//新数组替换旧数组
elements = newarr;
}
得到控制台错误输出:
- 在循环里按顺序把小于目标元素的值复制给旧数组,新数组空一个内存,再将大于目标数组的值复制给新数组,最后插入目标元素。(成功)
//插入一个元素到指定位置
public void insert(int index , int element) {
//创建一个新数组
int[] newarr = new int[elements.length+1];
for(int i = 0; i < elements.length ; i++) {
//目标位置之前的元素
if(i<index) {
newarr[i] = elements[i];
}
// else if(i==index) {
// newarr[i] = element;
// }
// 目标位置之后的元素
else {
newarr[i+1] = elements[i];
}
}
newarr[index] = element;
//新数组替换旧数组
elements = newarr;
}
得到控制台正确输出: