目录
一、给pos位置新增一个元素(增)
思路:
①创建一个顺序表
②判断插入的位置是否合法
③判断表已满的情况
④合法且不为空,给pos位置插入
1、创建一个顺序表
public class MyArrayList {
public int[] elem;
public int usedSize;
public MyArrayList(){//构造方法
this.elem= new int[10];//创建一个长度为10的数组
}
}
2、判断插入的位置是否合法
插入位置的前面一定要有数据
if(pos<0||pos>this.usedSize){//不能在0元素前面或者最后一个元素的后面的后面插入
System.out.println("插入的位置不合法!");
return;
}
3、判断是否已满
public boolean isFull(){
if (this.usedSize==this.elem.length){//里面实际长度等于数字的长度
System.out.println("元素已满");//无法在插入
return true;
}
return false;
}
}
4、给pos位置插入元素
public void add(int pos,int data){
//移动元素
for(int i=usedSize-1;i>=pos;i--){
this.elem[i+1]=this.elem[i];
}
elem[pos]=data;
usedSize++;
}
较完整代码:
public void add(int pos,int data){
//是否列表已满
if(isFull()){
System.out.println("顺序表已满");
return;
}
//pos是否合法
if (pos<0||pos>usedSize){
System.out.println("插入的位置不合法!");
return;
}
//移动元素
for(int i=usedSize-1;i>=pos;i--){//从最后一个元素开始往后移动元素
this.elem[i+1]=this.elem[i];//把第i个位置的元素放到了第i+1de 位置
}
elem[pos]=data;//把要插入的数据放到pos位置
usedSize++;
}
二、扩容函数(改)
//扩容函数
if(isFull()){
this.elem= Arrays.copyOf(this.elem,2*this.elem.length);//一般扩大为原来的2倍
}
三、查找是否包含某个元素(查)
思路:
①先判断是否为空
②不为空从下标0元素开始遍历
1、判断是否为空
public boolean isEmpty(){
return this.usedSize==0;
}
2、遍历开始查找
public boolean contains(int toFind){
if (isEmpty()){
System.out.println("列表为空");
return false;
}
for(int i=0;i<this.usedSize;i++){
if (this.elem[i]==toFind){
return true;
}
return false;
}
}
四、删除第一次出现的关键字(删)
思路:
①:判断是否为空(和上面判断为空一样)
②:找到要删除元素的下标
//删除第一次出现的关键字key
public void remove(int toRemove){//判断是否为空
if (isEmpty()){
return;
}
int index=search(toRemove);
if (index==-1){
System.out.println("没有你要删除的元素");
return;
}
for(int i=index;i<this.usedSize;i++){
this.elem[i]=this.elem[i+1];
}
this.usedSize--;
}
打印顺序表
//打印顺序表
public void display(){
for (int i=0;i<usedSize;i--){
System.out.println(this.elem[i]+" ");
}
}
清空顺序表
public void clear(){
//第一种方法简单粗暴
this.usedSize=0;
//第二种方法
for (int i=0;i<this.usedSize-1;i++){
this.elem[i]=0;//this.elem[i]=null;地址引用置为空
}
this.usedSize=0;
}
}