1. 程式人生 > 實用技巧 >順序表的實現

順序表的實現

順序表的實現

java實現

介面檔案Slist

package SequenceTable;

public interface Slist {
    public void clear();
    public boolean empty();
    public int length();
    public Object get(int i) throws Exception;
    public void insert(int i, Object x) throws Exception;
    public void remove(int i) throws Exception;
    
public int indexof(Object x); public void display(); }

實現類

package SequenceTable;

public class SqList implements Slist{
    private Object[] listElem; // 初始化元素內容
    private int curLen; // 初始化當前元素長度

    // 帶參建構函式
    public SqList(int maxSize){
        curLen = 0;
        listElem = new Object[maxSize];
    }
    
// 方法重寫 @Override public void clear() { curLen = 0; } @Override public boolean empty() { return curLen == 0; } @Override public int length() { return curLen; } // @Override public Object get(int i) throws Exception { if (i<0||i>curLen-1)
throw new Exception("第"+i+"個元素不存在"); return listElem[i]; } // @Override public void insert(int i, Object x) throws Exception { if (curLen==listElem.length) throw new Exception("順序表已滿"); if (i<0||i>curLen) throw new Exception("插入位置不存在"); for (int j=curLen;j>i;j--){ listElem[j] = listElem[j-1]; } listElem[i] = x; curLen++; } // @Override public void remove(int i) throws Exception { if (curLen==0) throw new Exception("順序表為空"); if(i<0||i>curLen+1) throw new Exception("刪除位置存在"); for (int j=i;j<curLen-1;j++){ listElem[j] = listElem[j+1]; } curLen--; } // 元素查 @Override public int indexof(Object x) { int temp = 0; for (int i=0;i<curLen;i++){ if (listElem[i] == x){ temp = i; return temp; } } return -1; } @Override public void display() { for (int i =0;i<curLen;i++){ System.out.println(listElem[i]); } } }

測試程式碼Test

package SequenceTable;

public class Test {
    public static void main(String[] args) throws Exception {
        // 建立物件
        SqList sqList = new SqList(10);
        //
        sqList.insert(0,0);
        sqList.insert(1,1);
        sqList.insert(2,2);
        sqList.insert(3,3);
        sqList.insert(4,4);
        sqList.insert(5,5);
        sqList.insert(6,6);
        sqList.insert(7,7);
        sqList.insert(8,8);
        sqList.insert(9,9);

        // 刪除
        sqList.remove(1);

        // 查序號
        System.out.println(sqList.indexof(9));

        // 查元素
        System.out.println(sqList.get(0));

        // 查所有
        sqList.display();


    }
}

python實現

實現類SqList

class SqList():
    #
    def add(listElem,maxsize,object):
        if len(listElem) == maxsize:
            print("順序列表已滿")
        else:
            listElem.append(object)
        return listElem
    # 插入
    def insert(listElem,maxsize,object,index):
        if len(listElem) == maxsize:
            print("順序列表已滿")
        elif index<0 and index>=len(listElem)-1:
            print("插入位置有誤")
        elif 0<=index<=len(listElem)-1:
            listElem[index+1:len(listElem)+1] = listElem[index:len(listElem)]
            listElem[index] = object
        return listElem
    def removebyIndex(index,listElem):
        if len(listElem) == 0:
            print('順序列表為空')
        elif index<0 and index>=len(listElem):
            print("刪除位置有誤")
        elif   0<=index<=len(listElem)-1:
            listElem[index:len(listElem)-1] = listElem[index+1:len(listElem)]

        return listElem
    def indexbyObj(listElem,object):
        for i in range(len(listElem)):
            if object == listElem[i]:
                print(object,"序號為",i)
    def display(listElem):
        for i in range(len(listElem)):
            print(listElem[i])

測試程式碼test

from SqList import SqList

# 初始化陣列
listElem = []

#
listElem = SqList.add(listElem,10,1)
listElem = SqList.add(listElem,10,2)
listElem = SqList.add(listElem,10,3)
listElem = SqList.add(listElem,10,4)
listElem = SqList.add(listElem,10,5)
listElem = SqList.add(listElem,10,6)
listElem = SqList.add(listElem,10,7)
listElem = SqList.add(listElem,10,8)
listElem = SqList.add(listElem,10,9)


#
listElem = SqList.insert(listElem,10,0,0)

#
listElem = SqList.removebyIndex(index=0,listElem = listElem)
#
SqList.indexbyObj(listElem,9)
SqList.display(listElem)