顺序表就是把线性表中的所有元素按照其逻辑顺序,依次储存到从指定的储存位置开始的一块连续的储存空间中,以下是实现代码,注释已写得很清楚故不过多赘述
package Structure;
import java.util.Arrays;
public class SeqList {
int length;
int data[];
/**
* 无参构造,创建空顺序表
*/
public SeqList() {
}
/**
*
* @param capacity
* @param data
* 创建指定容量和内容的顺序表
*/
public SeqList(int capacity, int[] data) {
if(data.length>capacity){
throw new IndexOutOfBoundsException("数组长度超过了创建表的容量");
}else{
this.data=new int[capacity];
this.length=0;
for(int i=0;i<data.length;i++){
this.data[i]=data[i];
this.length++;
}
}
}
/**
*
* @param length
* 创建最大容量为length的顺序表
*/
public SeqList(int length) {
this.data=new int[length];
this.length = 0;
}
/**
*
* @return
* 判断顺序表是否为空
*/
public boolean isEmpty(){
if(this.length==0&& this.data==null)return true;
return false;
}
/**
*清空顺序表
*/
public void clear(){
this.data=null;
this.length=0;
}
/**
*
* @param insert
* 向表尾添加元素
*/
public void add(int insert){
if(this.length>=this.data.length){
System.out.println("表已无剩余容量");
return;
}
this.data[this.length]=insert;
this.length++;
}
/**
* 在指定位置插入元素
* @param index
* @param element
*/
public void insert(int index,int element){
if(this.data.length==this.length){
System.out.println("容量已满");
return;
}
for(int i=this.length;i>index;i--){
this.data[i]=this.data[i-1];
}
this.data[index]=element;
this.length++;
}
/**
* 删除指定位置数据
* @param index
*/
public void delete(int index){
if(index<0||index>=this.length){
throw new IndexOutOfBoundsException();
}else {
for(int i=index;i<this.length-1;i++){
this.data[i]=this.data[i+1];
}
this.data[this.length-1]=0;
this.length--;
}
}
/**
* 获取指定位置的数据
* @param index
* @return
*/
public int getNum(int index){
if(index<0||index>=length){
throw new IndexOutOfBoundsException();
}
return this.data[index];
}
/**
* 扩容
*/
public void grow(){
//int temp[]=new int[this.data.length*2];
int temp[]=Arrays.copyOf(this.data,this.data.length*2);
this.data=temp;
}
/**
* 顺序表反转
*/
public int[] revers(){
int start=0,end=this.length-1,temp=0;
for(;start<end;start++){
temp=this.data[start];
this.data[start]=this.data[end];
this.data[end]=temp;
end--;
}
return this.data;
}
/**
* 顺序表排序
* @return
*/
public int[] sort(){
int temp=0;
for(int i=0;i<length-1;i++){
for(int j=i;j<length;j++){
if(this.data[i]>this.data[j]){
temp=this.data[i];
this.data[i]=this.data[j];
this.data[j]=temp;
}
}
}
return this.data;
}
/**
* 获取最大容量
* @return
*/
public int maxV(){
return this.data.length;
}
/**
* 重写tostrng方法
* @return
*/
@Override
public String toString() {
String temp="["+this.data[0];
for(int i=1;i<this.length;i++){
temp=temp+','+this.data[i];
}
temp=temp+"]";
return "SeqList{" +
"data=" + temp +
'}';
}
}