import java.util.Arrays;
public class SequenceList {
private int Default_size=16;
private String[] elements;
private int capacity;//存储数组长度
private int size=0;
public SequenceList(){//默认数组长度创建线性表
capacity=Default_size;
elements=new String[capacity];
}
public SequenceList(String data){//以一个初始化元素创建线性表
capacity=Default_size;
elements=new String[capacity];
elements[0]=data;
size++;
}
public SequenceList(String data,int initsize){
capacity=1;
while(capacity<initsize){
capacity<<=1;
}
elements=new String[capacity];
elements[0]=data;
size++;
}
public int length(){
return size;
}
public String ele(int index){//返回指定位置的元素
if(index<0||index>size){
throw new RuntimeException("outofindex");
}
return elements[index];
}
public int pos(String data){//返回指定元素的索引
for(int i=0;i<size;i++){
if(elements[i].equals(data)){
return i;
}
}
return -1;
}
public void add(String data){
insert(data,size);
}
public void insert(String data,int index){//向线性顺序表的指定位置插入元素
if(index<0||index>size){
throw new RuntimeException("outofindex");
}
insertCapacity(size+1);
System.arraycopy(elements,index,elements,index+1,size-index);
elements[index]=data;
size++;
}
public void insertCapacity(int minCapacity){//扩充数组长度
while(minCapacity>capacity){
capacity<<=1;
}
elements= Arrays.copyOf(elements,capacity);
}
public String del(int index){//删除线性表中指定位置的元素
if(index<0||index>size){
throw new RuntimeException("outofindex");
}
String old=elements[index];
int num=size-index-1;
if(num>0){
System.arraycopy(elements,index+1,elements,index,num);
}
elements[--size]=null;
return old;
}
public String tailData(){//删除最后一个元素
return del(size-1);
}
public boolean empty(){
return size==0;
}
public void clear(){
Arrays.fill(elements,null);
size=0;
}
public String toString(){
StringBuilder sb=new StringBuilder("[");
for(int i=0;i<size;i++){
sb.append(elements[i].toString()+" ");
}
int len=sb.length();
return sb.delete(len-1,len).append("]").toString();
}
public static void main(String[] args) {
SequenceList list=new SequenceList();
list.add("A");
list.add("B");
list.add("C");
System.out.println(list.toString());
System.out.println(list.ele(2)+" "+list.pos("c"));
}
}
顺序结构线性表
猜你喜欢
转载自blog.csdn.net/Answer0902/article/details/82497741
今日推荐
周排行