数据结构(java语言描述)线性表-顺序表

1.接口的声明:

package class1;
public interface LinearList {
            //判断线性表是否为空
            public boolean isEmpty();
            //返回线性表的长度
            public int length();
            //判断线性表是否已满
            public boolean isFull();
            //返回线性表中第i个元素的值
            //方法前面时返回的值的类型
            public Object get(int index);
            //查找线性表中值为x的下标
            public int LocateElem(Object x);
            //向线性表中插入结点
            public boolean insert (int index,Object x);
            //删除线性表中下标为i的结点
            public boolean delete(int index);
            //遍历整个线性表
            public void display();
            //清空线性表
            public void clear();
}

2.类的定义

package class1;
public   class SequenceList implements LinearList{
    private Object[] data;//线性表以数组形式存在
    private int Maxsize;//表空间的最大范围
    private int length;//表当前的节点个数,即表长
    //构造函数
    public SequenceList(int MaxSize){
        if(MaxSize>0){
        this.Maxsize=MaxSize;
        length=0;
        data=new Object[MaxSize];
        }
    }
    //判断是否为空
    public boolean isEmpty(){
        return (length<=0)?true:false;
    }
    //判断线性表是否已满
    public boolean isFull(){
        return(length>=Maxsize)?true:false;
    }
    //返回线性表的大小
    public int length(){
        return length;
    }
    //返回线性表中第i个元素的值
    public Object get(int i){
        return (i<0||i>length)?null:(Object)data[i];
    }
    //查找线性表中值x的节点
    public int LocateElem(Object x){
        //查找表中值为x的结点,找到则返回该结点的序号,否则返回-1;
        //若表中值为x的结点有多个,找到的是最前面一个
        for(int i=0;i<length;i++){
            if(data[i]==x) return i;
        }
        return -1;
    }
    //在线性表的第i个位置插入值为x的结点(下标)
    public boolean insert(int i,Object x){
        //在表中第i个位置插入值为x的结点
        //若插入成功返回true,否则返回false
        //插入位置不合理,则插入失败
        if(i<0||i>length||length==Maxsize)
        return false;
        else{
            for(int j=length;j>i;j--){
                data[j]=data[j-1];
                }
            data[i]=x;
            length++;
            //表长+1
            return true;
        }
    }
    //删除线性表中的第i个结点data[i-1],若成功返回true,否则返回false;
    //第i个结点不存在,删除失败
    public boolean delete(int i){
        if(i<0||i>length-1||length==0)
            return false;
        else{
            for(int j=i;j<length-1;j++){
                data[j]=data[j+1];
            }
            length--;
            return true;
        }
    }
    public void display(){
        System.out.println("当前线性表的长度:"+length());
        for(int i=0;i<length;i++){
            System.out.println("第"+i+"个结点为:"+data[i]);
        }
    }
    //清空线性表
    public void clear(){
        if(length!=0){
            for(int i=0;i<length;i++){
                data[i]=null;
            }
            length=0;
        }
    }
}

3.主程序

package class1;
public class li1 {
    public static void main(String[] args){
        SequenceList s=new SequenceList(10);
        System.out.println("Is Empty?"+s.isEmpty());
        System.out.println("Size:"+s.length());
        s.insert(0,"Jack");
        s.insert(1,"John");
        System.out.println("s insert?"+s.insert(1,"John"));
        s.insert(2,"Lily");
        s.insert(3,"Lucy");
        s.insert(4,"Lei");
        System.out.println("Is Empty?"+s.isEmpty());
        System.out.println("Is Full?"+s.isFull());
        System.out.println("Size:"+s.length());
        s.delete(2);
        System.out.println("Size:"+s.length());
        System.out.println(s.get(0));
        System.out.println(s.LocateElem("Lei"));
        s.display();
        s.clear();
        System.out.println("Size:"+s.length());
    }
}

4.执行结果

Is Empty?true
Size:0
s insert?true
Is Empty?false
Is Full?false
Size:6
Size:5
Jack
3
当前线性表的长度:5
第0个结点为:Jack
第1个结点为:John
第2个结点为:Lucy
第3个结点为:Lei
第4个结点为:John
Size:0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值