這裏我簡單說一下吧,Sqlist類實現了ListIntf接口,也就是咱們上一節中所提到的接口,以後eclipse中就會提示咱們複寫ListIntf中的方法,咱們根據順序表的特色,逐一複寫便可java
詳情看註釋吧~數組
PS:全部的參數i都是序號,從1開始eclipse
import java.util.Scanner; public class SqList implements ListIntf{ final int maxlen = 1000; //線性表中可容納最多數據元素數目 String v[] = new String[maxlen]; int len =0;//len是長度,1開始,是位序號 /** * * @return 返回線性表中可容納最多數據元素數目 */ int getmaxlen(){ return maxlen; } public SqList(){ //構造方法中實現相關的接收數據操做 Scanner sc = new Scanner(System.in); int n; String[] a = new String[maxlen]; System.out.println("請輸入須要的數據個數:"); n=sc.nextInt(); sc.close(); for(int i=0;i<n;i++){ a[i] = "a"+i;//a[0]的數值是 a0,a[1]的數值是a1,以此類推…… } setData(a); } /** * 將String數組a賦值給String數組v * @param String數組 */ public void setData(String[] a){ v = a; } @Override public int size() { return len; } @Override public void clear() { v = new String[maxlen]; } @Override public boolean isEmpty() { return len==0; } @Override public String get(int i) { return v[i-1]; } @Override public int indexOf(String s) { int i; for(i=0;i<len;i++){ if(v[i].equals(s)){ return i+1; } } System.out.println("順序表中不存在該元素!!"); return 0; } @Override public String getPre(String s) { //當前是順序表,是順序存儲結構,無需實現此方法 return null; } @Override public String getNext(String s) { //當前是順序表,是順序存儲結構,無需實現此方法 return null; } @Override public void insertElementAt(String s, int i) { //首先判斷順序表是否已滿,其次判斷i是否合法,以後再進行插入操做 if(len==maxlen){ System.out.println("順序表已滿!"); return;//結束判斷,跳出判斷語句 }else{ if(i<1||i>len){ System.out.println("輸入的序號不合法!"); return; }else{ for(int j=len-1;j>=i-1;j--){ v[j+1]=v[j]; } v[i-1] =s; len++; return; } } } @Override public String remove(int i) {
String string; if(i<1||i>len){ System.out.println("輸入序號不合法!"); return null; }else{ string = v[i-1]; for(int j=i-1;j<len;j++){ v[j-1] = v[j]; } len--; return string; } } @Override public String remove(String s) { // TODO Auto-generated method stub String string; for(int i=0;i<len;i++){ if(v[i].equals(s)){ string = v[i]; remove(i+1);//這裏的i是索引(下標),索引(下標)加1成爲序號 return string; } } System.err.println("當前順序表中沒有該元素"); return null; } }