大家好,我是小鱼儿
目录
顺序表介绍:
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。
🍑顺序表一般可以分为:
- 静态顺序表:使用定长数组存储元素。(本篇主要围绕静态顺序表展开)
- 动态顺序表:使用动态开辟的数组存储。
顺序表的手动实现
📝本文将创建两个Java文件:MyArraysList.java用于顺序表的实现,Test.java用于顺序表的各个接口的测试
顺序表功能接口概览
import java.util.Arrays;
public class MyArraysList {
private int[] elem;
private int usedSize; // 默认值是0
private static final int DEFAULT_SIZE = 4; // 定义为常量,更加安全
// 初始化顺序表
public MyArraysList() {
this.elem = new int[4];
}
// 对顺序表进行扩容
public void expand() {}
//判断当前顺序表是否为空
public boolean isempty() {}
// 判断当前顺序表是不是满了
public boolean isFull() {}
// 打印顺序表
public void display() {}
// 新增元素,默认在数组最后新增
public void add(int data) {}
// 新增元素,在数组最前面新增
public void addHead(int data){}
// 在 pos 位置新增元素
public void addPos(int pos, int data) {}
// 删除表头元素
public void removeHead() {}
// 删除表尾元素
public void removeTail() {}
// 指定下标元素的删除
public void removePos(int pos) {}
//删除第一次出现的关键字key
public void remove(int toRemove) {}
// 判定是否包含某个元素
public boolean contains(int toFind) { return true; }
// 查找某个元素对应的位置
public int indexOf(int toFind) { return -1; }
// 获取 pos 位置的元素
public int getPos(int pos) { return -1; }
// 给 pos 位置的元素设为 value
public void setPos(int pos, int value) {}
// 获取顺序表长度
public int size() { return 0; }
// 清空顺序表
public void clear() {}
}
基本功能的实现
🌰对顺序表进行扩容
// 对顺序表进行扩容 public void expand() { this.elem = Arrays.copyOf(this.elem, this.usedSize * 2); System.out.println("已经成功扩容至原来的两倍"); // 给用户提醒 }
🌰判断顺序表是否为空
/** * 判断当前顺序表是否为空 * @return true->空的,false->还没空 */ public boolean isempty() { if (this.usedSize == 0) { return true; } else return false; }
🌰判断顺序表是否已满
/** * 判断当前顺序表是不是满了 * @return true->满了,false->还没满 */ public boolean isFull() { if (this.usedSize == this.elem.length) return true; else return false; }
🌰打印顺序表
// 打印顺序表 // 打印的第一种方式 public void display() { for (int i = 0; i < this.elem.length; i++) { System.out.print(this.elem[i] + " "); } System.out.println(); } // 打印的第二种方式,用Arrays.toString直接打印 public void display() { System.out.println(Arrays.toString(this.elem)); }
🌰获取顺序表的有效长度
// 获取顺序表的有效长度 public int size() { return this.usedSize; }
🌰清空顺序表
// 清空顺序表 public void clear() { for (int i = 0; i < this.usedSize; i++) { this.elem[i] = 0; } this.usedSize = 0; // 注意有效数组长度也要清零 }