SeqList.java
public class SeqList{
private int[] data = new int[10];
private int size = 0;
//扩容
private void realloc(){
int[] newData = new int[this.data.length*2];
for(int i = 0; i < this.data.length; i++){
newData[i] = this.data[i];
}
this.data = newData;
}
//打印顺序表
public void display(){
System.out.print("[");
for(int i = 0; i < size; i++){
System.out.print(data[i]);
if(i != size - 1){
System.out.print(",");
}
}
System.out.println("]");
}
//在pos位置新增元素
public void add(int pos, int data){
//判断位置是否合法
if(pos < 0 || pos >size){
return;
}
//判断容量
if(this.size > this.data.length){
realloc();
}
//尾插
if(pos == size){
this.data[pos] = data;
this.size++;
return;
}
//指定元素中间插入
for(int i = this.size - 1 ; i >= pos; i--){
this.data[i + 1] = this.data[i];
}
this.data[pos] = data;
this.size++;
}
//判断是否包含某个元素
public boolean contains(int toFind){
for(int i = 0; i < this.size; i++){
if(this.data[i] == toFind){
return true;
}
}
return false;
}
//查找某个元素的对应位置
public int search (int toFind){
for(int i = 0; i < this.size; i++){
if(this.data[i] == toFind){
return i;
}
}
return -1;
}
//获取pos位置的元素
public int getPos(int pos){
return this.data[pos];
}
//给pos位置的元素设为value
public void setPos(int pos,int value){
this.data[pos] = value;
}
//删除第一次出现的关键字key (按值删除
public void remove(int toRemove){
int pos = search(toRemove);
//判断toRemove是否存在
if(pos == -1){
return;
}
//删除
//情况一:删除最后一个元素
if(pos == this.size - 1){
this.size--;
return;
}
//情况二:不是末元素,需依次覆盖
for(int i = pos; i < this.size - 1; i++){
this.data[i] = this.data[i + 1];
}
this.size--;
}
//获取顺序表的长度
public int size(){
return this.size;
}
//清空顺序表
public void clear(){
this.size = 0;
}
}
Test.java
public class Test{
public static void main(String[] args) {
SeqList seq = new SeqList();
seq.display();
seq.add(0,1);
seq.add(1,2);
seq.add(2,3);
seq.add(3,4);
seq.display();
seq.add(1,8);
seq.display();
System.out.println(seq.contains(8));
System.out.println(seq.search(4));
System.out.println(seq.getPos(1));
seq.setPos(4,6);
seq.display();
seq.remove(8);
seq.display();
System.out.println(seq.size());
seq.clear();
seq.display();
System.out.println(seq.size());
}
}