import java.util.Arrays;
class MyArraylist {
public int[] elem;
public int usedSize = 0;//0
//默认容量
private static final int DEFAULT_SIZE = 10;
public MyArraylist() {
this.elem = new int[DEFAULT_SIZE];
}
/**
* 打印顺序表:
* 根据usedSize判断即可
*/
public void display() {
for (int i = 0; i < usedSize; i++) {
System.out.print(elem[i]+" ");
}
System.out.println();
}
// 新增元素,默认在数组最后新增
public void add(int data) {
if(isFull()) {
int[] ret = Arrays.copyOf(elem,elem.length*2);
elem = ret;
}
elem[usedSize] = data;
usedSize++;
}
/**
* 判断当前的顺序表是不是满的!
*
* @return true:满 false代表空
*/
public boolean isFull() {
if(usedSize == elem.length)
return true;
else
return false;
}
private boolean checkPosInAdd(int pos) {
if(pos >= 0 && pos <= usedSize)
return true;//合法
else {
System.out.println("pos位置不合法");
return false;
}
}
// 在 pos 位置新增元素
public void add(int pos, int data) {
if(isFull()) {
int[] ret = Arrays.copyOf(elem,elem.length*2);
elem = ret;
}
if(checkPosInAdd(pos)) {
for (int i = usedSize-1 ; i >= pos ; i--) {
elem[i+1] = elem[i];
}
elem[pos] = data;
usedSize++;
}
}
// 判定是否包含某个元素
public boolean contains(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind)
return true;
}
return false;
}
// 查找某个元素对应的位置
public int indexOf(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind)
return i;
}
return -1;
}
// 获取 pos 位置的元素
public boolean checkPosInGet(int pos) {
if(pos >= 0 && pos < usedSize)
return true;//合法
else {
System.out.println("pos位置不合法");
return false;
}
}
public int get(int pos) {
//pos不合法 顺序表为空
if(checkPosInAdd(pos) && isEmpty()) {
return elem[pos];
}
return -1;
}
private boolean isEmpty() {
if(usedSize!=0)
return true;
return false;
}
// 给 pos 位置的元素设为【更新为】 value
public void set(int pos, int value) {
if(checkPosInGet(pos) && isEmpty()) {
elem[pos] = value;
}
}
/**
* 删除第一次出现的关键字key
*
* @param key
*/
public void remove(int key) {
if(isEmpty() == false) {
System.out.println("顺序表为空,不能删除");
return;
}
int ret = indexOf(key);
for (int i = ret; i < usedSize-1; i++) {
elem[i] = elem[i+1];
}
usedSize--;
}
// 获取顺序表长度
public int size() {
return usedSize;
}
// 清空顺序表
public void clear() {
usedSize=0;
}
}
Java:顺序表实现源码
最新推荐文章于 2024-10-27 15:49:02 发布