顺序结构线性表

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
今日推荐