シーケンステーブル(SeqList)Java実装
実装された操作は、は、データ(addData)をシーケンステーブルの最後に追加する. 順序表に位置を指定してデータを追加する(insertDataByLoc); は、シーケンステーブルで指定されたデータ(deleteDataByData)を削除する. 順序表で指定された位置のデータを削除する(deleteDataByLoc). 指定された位置のデータ(findDataByLoc)を検索する. は、指定データの位置を検索する. 補助的な実装の操作は、は、シーケンステーブルが空かどうかを判断する(isEmpty(). は、シーケンステーブルがいっぱいかどうかを判断する. 下記は実現コード(SeqList)です.
/**
*
* , :
* deleteDataByData(Type): 。
* findLocationOfData(Type): 。
*/
public class SeqList {
/**
*
*/
private static final int MAXSIZE = 100;//
private int size;//
Type[] dataList;// Type
/**
*
*/
public SeqList(){
dataList = (Type[]) new Object[MAXSIZE];
this.size = 0;
}
/**
* ( )
* @param dataList:
*/
public SeqList(Type[] dataList){
this.dataList = dataList;
this.size = dataList.length;
}
/**
*
* @param size:
*/
public SeqList(int size){
dataList = (Type[]) new Object[size];
this.size = 0;
}
/**
*
* @return size:
*/
public int getSize(){
return this.size;
}
/**
*
*/
public void clear(){
this.dataList = null;
this.size = 0;
}
/**
* data
* @param data:
* @return -1: ,
* 0:
*/
public int addData(Type data){
if (this.size == MAXSIZE) {//
//System.out.println(" !");
return -1;
}
dataList[size++] = data;
// , 。
// 1
return 0;
}
/**
* data
* @param data:
* @param loc:
* @return -1: ,
* 0:
*/
public int insertDataByLoc(Type data, int loc){
if ((size == MAXSIZE)){
//System.out.println(" !");
return -1;
}else if ((loc >= MAXSIZE)){
//System.out.println(" ! " + MAXSIZE + " !");
return -1;
} else if (loc < 0){
//System.out.println(" ! !");
return -1;
} else if (loc >= size){
addData(data);
//System.out.println(" !
!");
return 0;
}else if (size == 0) {
dataList[0] = data;
return 0;
}else {
for (int i = size-1; i >= loc; i--) {
// loc
dataList[i+1] = dataList[i];
}
dataList[loc] = data;//
this.size += 1;// 1
return 0;
}
}
/**
* ,
* @param data:
* @return i:
* -1:
*/
public int deleteDataByData(Type data){
for (int i = 0; i < this.size; i++) {
if (dataList[i].equals(data)) {
deleteDataByLoc(i);
return i;
}
}
return -1;
}
/**
*
* @param loc:
* @return
*/
public Type deleteDataByLoc(int loc){
Type data = findDataByLoc(loc);// loc
if (data == null)//
return null;
for (int i = loc; i < this.size; i++) {
// loc
dataList[i] = dataList[i+1];
}
this.size --;// 1
return data;
}
/**
*
* @param loc:
* @return
*/
public Type findDataByLoc(int loc){
if ((loc > this.size) || (loc < 0) || (dataList == null))
return null;
return dataList[loc];
}
/**
*
* @param data:
* @return loc:
*/
public int findLocationOfData(Type data){
for (int i = 0; i < this.size; i++) {
//
if (dataList[i].equals(data)) {
return i;
}
}
return -1;
}
/**
*
* @return
*/
public boolean isEmpty(){
// , if(dataList == null) ?
// , !!!
// if ((dataList == null) || (dataList.length == 0))
// return true;
// return false;
for (int i = 0; i < dataList.length; i++) {
if (dataList[i] != null)
return false;
}
return true;
}
/**
*
*/
public void display(){
for (int i = 0; i < this.size; i++) {
System.out.print(" " + dataList[i]);
}
}
}
以下はこのコードのテストコード(SeqListTest)です.public class SeqListTest {
private int[] dataList = new int[10];
private static final int SIZE = 20;
private static final int MULTI = 3;
/**
* main()
* @param args
*/
public static void main(String[] args) {
SeqListTest s = new SeqListTest();
s.run();
}
/**
*
*/
public void run(){
//
for (int i = 0; i < dataList.length; i++) {
dataList[i] = (i+1);
}
SeqList seqDataList = new SeqList<>();
if (seqDataList.isEmpty())// isEmpty()
System.out.println(" 。");
for (int i = 0; i < SIZE; i++) {// addData()
seqDataList.addData((i * MULTI));
}
// findDataByLoc()
display(seqDataList);
// insertDataByLoc()
System.out.println(" -3 :10");
seqDataList.insertDataByLoc(10,-3);
System.out.println(" 3 :10");
seqDataList.insertDataByLoc(10,3);
System.out.println(" 23 :10");
seqDataList.insertDataByLoc(10,23);
System.out.println(" 103 :10");
seqDataList.insertDataByLoc(10,103);
display(seqDataList);
// deleteDataByData()
System.out.println(" :3");
seqDataList.deleteDataByData(3);
System.out.println(" :5");
seqDataList.deleteDataByData(5);
display(seqDataList);
// deleteDataByLoc()
System.out.println(" :-6 ");
seqDataList.deleteDataByLoc(-6);
System.out.println(" :6 ");
seqDataList.deleteDataByLoc(6);
System.out.println(" :26 ");
seqDataList.deleteDataByLoc(26);
display(seqDataList);
// findLocationOfData()
System.out.println(" :15");
seqDataList.deleteDataByData(15);
System.out.println(" :105");
seqDataList.deleteDataByData(105);
display(seqDataList);
// findLocationOfData()
System.out.println(" :10 :" + seqDataList.findLocationOfData(10));
System.out.println(" :-1 :" + seqDataList.findLocationOfData(-1));
// clear()
seqDataList.clear();
display(seqDataList);
}
private void display(SeqList seqDataList){
System.out.println(" :");
for (int i = 0; i < seqDataList.getSize(); i++) {
System.out.print(" " + seqDataList.findDataByLoc(i));
}
System.out.println("
:" + seqDataList.getSize());
System.out.println();
}
}
長い間コードを書いていませんので、かなり乱れています.ご了承ください.