順序表的介紹
在了解順序表之前先給大家介紹一下什么叫做線性表:
線性表(linear list):是n個具有相同特性的數(shù)據(jù)元素的有限序列。 線性表是一種在實際中廣泛使用的數(shù)據(jù)結構。
常見的線性表:順序表、鏈表、棧、隊列…
線性表在邏輯上是線性結構,也就說是連續(xù)的一條直線。但是在物理結構上并不一定是連續(xù)的,線性表在物理上存儲時,通常以數(shù)組和鏈式結構的形式存儲。
順序表就是線性表的一種,是邏輯地址和物理地址都是連續(xù)的。順序表是用一段物理地址連續(xù)的存儲單元依次存儲數(shù)據(jù)元素的線性結構,一般情況下采用數(shù)組存儲。在數(shù)組上完成數(shù)據(jù)的增刪查改 。
順序表接口的實現(xiàn)
順序表中是以數(shù)組來實現(xiàn)的,數(shù)據(jù)的大小是由數(shù)組的大小來決定的話每次新增和刪除數(shù)據(jù)的話數(shù)組的大小實時,會造成頻繁改變數(shù)組的大小,使用一個標志來記錄順序表的大小會更方便,不會經常改變數(shù)組大小 。
public class SeqList {
? ? private int[] elem;
? ? private int usedSize;//記錄當前順序表當中 有多少個有效的數(shù)據(jù)
? ? private static final int DEFAULT_CAPACITY = 10;
? ? public SeqList() {
? ? ? ? this.elem = new int[DEFAULT_CAPACITY];
? ? }
? ? // 打印順序表,注意:該方法并不是順序表中的方法,為了方便看測試結果給出的
? ? public void display() {
? ? }
? ? // 新增元素,默認在數(shù)據(jù) 最后新增
? ? 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() {
? ? }
? ? //刪除第一次出現(xiàn)的關鍵字key
? ? public void remove(int toRemove) {
? ? }
? ? //判斷順序表是否為空
? ? public Boolean isEmpty(){
? ? }
? ? // 清空順序表
? ? public void clear() {
? ? }
}
實現(xiàn)的第一個接口就是打印順表,其實就是對數(shù)組進行一個遍歷。
// 打印順序表,注意:該方法并不是順序表中的方法,為了方便看測試結果給出的
public void display() {
? ? for (int i = 0; i < this.usedSize; i++) {
? ? ? ? System.out.print(this.elem[i] + " ");
? ? }
? ? System.out.println();
}
進行新增數(shù)據(jù)的測試 :
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














