顺序表:是用一段物理地址连续的存储单元依次存储数据元素的线性结构。它的空间是连续的。 下面以数组存储的形式实现顺序表(增删查改)
1.先定义变量,并实现打印顺序表
private int[] data = new int[10];
private int size = 0; // size 表示当前数组中有多少个有效元素
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("]");
}
2.在pos位新增元素
public void add(int pos, int elem) { //elem表示插入的元素
if(pos > data.length || pos < 0) {
return;
}
if(size > data.length) { //超出范围
realloc(); //需要扩容
}
if(pos == size) {
data[pos] = elem;
size++;
}
else {
for(int i = size; i > pos; i--) {
data[i] = data[i - 1];
}
data[pos] = elem;
size++;
}
}
附扩容的方法:
public 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;
}
3.判断是否包含某个元素
public boolean contains(int toFind) {
for(int i = 0; i < this.size; i++) {
if(this.data[i] == toFind) {
return true;
}
}
return false;
}
4.查找某个元素对应的位置
public int search(int toFind) {
for(int i = 0; i < this.size; i++) {
if(this.data[i] == toFind) {
return i;
}
}
return -1;
}
5.获取pos位置的元素
public int getPos(int pos) {
return this.data[pos];
}
6.给pos位置元素设为value
public void setPos(int pos, int value) {
this.data[pos] = value;
}
7.删除第一次出现的关键字
public void remove(int toRemove) {
int pos = search(toRemove);//对关键字进行查找
if(pos == -1){
return;
}
if(pos == this.size - 1) {
this.size--;
return;
}
for (int i = pos; i < this.size; i++) {
this.data[i - 1] = this.data[i];
}
this.size--;
}
8.获取顺序表的长度
public int size() {
return this.size;
}
9.清空顺序表
public void clear() {
this.size = 0;
this.data = new int[10];
}