顺序表
静态顺序表:使用定长数组存储。
动态顺序表:使用动态开辟的数组存储。
接口
package com.github.sqlist;
public interface ISequence {
// 在 pos 位置插入 val
boolean add(int pos, Object data);
// 查找关键字 key 找到返回 key 的下表,没有返回 -1
int search(Object key);
// 查找是否包含关键字 key 是否在顺序表当中(这个和search有点冲突)
boolean contains(Object key);
// 得到 pos 位置的值
Object getPos(int pos);
// 删除第一次出现的关键字 key
Object remove(Object key);
// 得到顺序表的长度
int size();
// 打印顺序表
void display();
// 清空顺序表以防内存泄漏
void clear();
}
实现接口里的每个方法
package com.github.sqlist;
import java.util.Arrays;
/*
* 顺序表
*/
public class MySequenceImpl implements ISequence {
private Object[] elem;
// 有效数据个数
private int usedSize;
private static final int DEFAULT_SIZE = 10;
public SqList() {
this.elem = new Object[DEFAULT_SIZE];
this.usedSize = 0;
}
/**
* 判断是否为满
* @return 满了返回true,否则返回false
*/
private boolean isFull() {
return this.elem.length == this.usedSize;
}
/**
* 在 pos 位置插入 val
* @param pos
* 要插入的位置
* @param data
* 要插入的值
* @return
* 插入成功返回true,否则返回false
*/
@Override
public boolean add(int pos, Object data) {
// 1. 判断pos位置的合法性
if (pos < 0 || pos > this.elem.length