详细的代码可见github:
https://github.com/AbitGo/myClassWork/tree/master/workspace_ds
表一般分为顺序表以及链表,本文主要讲述顺序表。
所需要实现的接口功能。
package com.company.ch2.interfaceFile;
public interface SequenceTableInterface {
void clear();
boolean isEmpty();
int getLenght();
Object get(int i) throws Exception;
boolean insert(int index,Object x) throws Exception;
boolean remove(int i);
int indexOf(Object x);
void display();
}
顺表主要代码
package com.company.ch2.SequenceTable;
import com.company.ch2.SequenceTableInterface;
public class SequenceTable implements SequenceTableInterface {
final int maxLen = 100;
private Object[] listElem;
private int curlen;
public SequenceTable() {
curlen = 0;
listElem = new Object[maxLen];
}
@Override
public void clear() {
this.curlen = 0;
}
@Override
public boolean isEmpty() {
if (this.curlen == 0)
return true;
return false;
}
@Override
public int getLenght() {
return this.curlen;
}
@Override
public Object get(int i) throws Exception {
if (i < 0 || i > curlen - 1) {
throw new Exception("第" + i + "元素不存在");
}
return listElem[i];
}
@Override
public boolean insert(int index, Object x) throws Exception {
if (index < 0 || index > curlen) {
System.out.println("插入位置不合法");
return false;
}
if (curlen >= maxLen) {
System.out.println("数组已满");
return false;
}
for (int j = curlen; j > index; j--) {
listElem[j] = listElem[j - 1];
}
listElem[index] = x;
curlen++;
return true;
}
@Override
public boolean remove(int index) {
if (index < 0 || index > curlen) {
System.out.println("删除位置不合法");
return false;
}
if (curlen <= 0) {
System.out.println("此表已空");
return false;
}
for (int i = index; i < curlen - 1; i++) {
listElem[i] = listElem[i + 1];
}
curlen--;
return false;
}
@Override
public int indexOf(Object x) {
int j = 0;
while (j < curlen && !listElem[j].equals(x)) {
j++;
}
if (j == curlen) {
System.out.println("没有这个元素");
return -1;
}
return j;
}
@Override
public void display() {
for (int i = 0; i < curlen; i++) {
System.out.print(" " + listElem[i]);
}
System.out.println();
}
public void deserve() {
int len = this.getLenght();
for (int i = 0; i < len / 2; i++) {
Object p = this.listElem[i];
this.listElem[i]=this.listElem[len-1-i];
this.listElem[len-1-i]=p;
}
}
}
测试类。
package com.company.ch2.SequenceTable;
public class SequenceTableTest {
public static void main(String[] args) throws Exception {
SequenceTable sequenceTable = new SequenceTable();
System.out.println("----------插入操作:开始----------");
sequenceTable.insert(0,0);
sequenceTable.insert(1,1);
sequenceTable.insert(2,2);
sequenceTable.insert(3,3);
sequenceTable.insert(4,4);
sequenceTable.insert(2,5);
sequenceTable.insert(10,5);
sequenceTable.display();
System.out.println("----------插入操作:结束----------");
System.out.println("----------查询操作:开始----------");
int index = sequenceTable.indexOf(1);;
if(!(index==-1)){
System.out.println("位置为:"+index);
}
System.out.println("----------查询操作:结束----------");
System.out.println("----------删除操作:开始----------");
sequenceTable.remove(0);
sequenceTable.display();
System.out.println("----------删除操作:结束----------");
System.out.println("----------清零操作:开始----------");
sequenceTable.clear();
sequenceTable.display();
System.out.println("----------清零操作:结束----------");
}
}
测试结果
----------插入操作:开始----------
插入位置不合法
0 1 5 2 3 4
----------插入操作:结束----------
----------查询操作:开始----------
位置为:1
----------查询操作:结束----------
----------删除操作:开始----------
1 5 2 3 4
----------删除操作:结束----------
----------清零操作:开始----------
----------清零操作:结束----------