标签:sys 物理地址 print 实现 this 空间 超出 长度 new
顺序表:是用一段物理地址连续的存储单元依次存储数据元素的线性结构。它的空间是连续的。 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("]");
}
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;
}
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;
}
public int getPos(int pos) {
return this.data[pos];
}
public void setPos(int pos, int value) {
this.data[pos] = value;
}
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--;
}
public int size() {
return this.size;
}
public void clear() {
this.size = 0;
this.data = new int[10];
}
标签:sys 物理地址 print 实现 this 空间 超出 长度 new
原文地址:https://blog.51cto.com/14298563/2449666