順序表的實現
阿新 • • 發佈:2020-09-04
順序表的實現
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)