/**
* @author NEOSONG
* @date Sep 28, 2017
* 7:30:43 PM
* program OF information:定义一些线性结构操作
* 1,定义接口,并在其中定义方法,接口是100%的抽象类,仅有方法头,没有方法体
*/
public interface SqlList
{
int count();//求长度
void clear();//清空操作
boolean isEmpty();//判断顺序表是否为空
boolean isFull();//判断是否已满
void attend(T item);//附加操作
void insert(T item,int l);//插入操作
void delete(int i);//删除操作
T getElement(int i);//取表元
int locate(T item);//定位
}
/*
* @date Sep 28, 2017
* 7:44:53 PM
* program OF information: 数据结构---线性表--顺序表的实现
* 2.实现接口中定义的方法
*/
public class SequenceList
implements SqlList
{
//定义构造方法,以初始化变量
public SequenceList(){}
public SequenceList(int size){
if(size>=0){
list=(T[])new Object[size];//初始化T类型数组list,不能用子类引用指向父类对象,故需强制转换
this.maxSize=size;
last=-1;
}
else
throw new RuntimeException("初始化大小不能小于0"+size);
}
private int last;//定义last用于保存最后一个元素的位置
private int maxSize;//用于定义顺序表最大的存储能力,last<=maxSize
private T[] list;
public T getList(int index) {
return list[index];
}
public void setList(int index,T value) {
list[index]=value;
}
public int getLast() {
return last;
}
public void setLast(int last) {
this.last = last;
}
public int getMaxSize() {
return maxSize;
}
public void setMaxSize(int maxSize) {
this.maxSize = maxSize;
}
//SequenceList
[] list=new SequenceList[maxSize];
//求长度
public int count(){
return last+1;
}
//清空
public void clear(){
//setLast(-1);
setLast(-1);
}
//判断是否为空
public boolean isEmpty(){
return last==-1;
}
//判断是否已满
public boolean isFull(){
return last==maxSize-1;//此地方在自己写的时候错误,没有-1
}
//附加---循环遍历到最后一个数,然后加进去
public void attend(T item){
//判断线性表是否已满,以增强程序的健壮性
if(isFull()){
System.out.println("数组已经满了");
return;//结束方法
}
list[++last]=item;
}
//插入 list--- 数组, item---数值 l---位置
public void insert(T item,int l){
//判断数组是否已满
if(isFull()){
System.out.println("数组已经满了");
return;
}
//判断l的数值是否正确
if(l<1||l>last+2){
System.out.println("位置不正确,请检查");
return;
}
// for(int i=last+1;i>l-1;i--){
// list[i]=list[i-1];
// }
list[l-1]=item;
last++;//数组最后一个元素的位置改变
}
//删除 list ----数组 l----位置
public void delete(int l){
//判断线性表是否为空
if(isEmpty()){
System.out.println("数组为空");
return;
}
if(l<1||l>count()){//这个地方调用了count()方法,所以在count方法中返回last值时,
//不能用last++。这样会无形中增加last的值,以至于在遍历输出数组时,最后一个数值会是null
System.out.println("输入数据有误");
return;
}
//正式删除代码
for(int i=l-1;i