顺序表的介绍
在了解顺序表之前先给大家介绍一下什么叫做线性表:
线性表(linear list):是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构。
常见的线性表:顺序表、链表、栈、队列…
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。
顺序表就是线性表的一种,是逻辑地址和物理地址都是连续的。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改 。
顺序表接口的实现
顺序表中是以数组来实现的,数据的大小是由数组的大小来决定的话每次新增和删除数据的话数组的大小实时,会造成频繁改变数组的大小,使用一个标志来记录顺序表的大小会更方便,不会经常改变数组大小 。
public class SeqList {
private int[] elem;
private int usedSize;//记录当前顺序表当中 有多少个有效的数据
private static final int DEFAULT_CAPACITY = 10;
public SeqList() {
this.elem = new int[DEFAULT_CAPACITY];
}
// 打印顺序表,注意:该方法并不是顺序表中的方法,为了方便看测试结果给出的
public void display() {
}
// 新增元素,默认在数据 最后新增
public void add(int data) {
}
//判断顺序表是否满了
private boolean isFull() {
}
// 判定是否包含某个元素
public boolean contains(int toFind) {
return false;
}
// 查找某个元素对应的位置
public int indexOf(int toFind) {
return -1;
}
// 获取 pos 位置的元素
public int get(int pos) {
}
// 获取顺序表长度
public int size() {
}
// 给 pos 位置的元素设为 value【更新的意思 】
public void set(int pos, int value) {
}
//检查pos下表是否合法
private boolean checkPos(int pos){
}
// 在 pos 位置新增元素
public void add(int pos, int data) {
}
private void resize() {
}
//删除第一次出现的关键字key
public void remove(int toRemove) {
}
//判断顺序表是否为空
public Boolean isEmpty(){
}
// 清空顺序表
public void clear() {
}
}
实现的第一个接口就是打印顺表,其实就是对数组进行一个遍历。
// 打印顺序表,注意:该方法并不是顺序表中的方法,为了方便看测试结果给出的
public void display() {
for (int i = 0; i < this.usedSize; i++) {
System.out.print(this.elem[i] + " ");
}
System.out.println();
}
进行新增数据的测试 :
public static void main(String[] args) {
SeqList seqList = new SeqList();
seqList.add(1);
seqList.add(2);
seqList.add(3);
seqList.add(4);
seqList.add(5);
seqList.add(6);
seqList.add(1);
seqList.add(2);
seqList.add(3);
seqList.add(4);
seqList.add(5);
seqList.add(6);
seqList.display();
System.out.println(seqList.contains(1));//包含1
System.out.println(seqList.contains(100));//不包含100
System.out.println(seqList.indexOf(4));//由元素4的下标
System.out.println(seqList.indexOf(50));//没有元素50
}
最后输出结果:
1 2 3 4 5 6 1 2 3 4 5 6
true
false
3
-1