• 数据结构(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

  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS(WKWebView)OC与JS交互 之三
    iOS(UIWebView 和WKWebView)OC与JS交互 之二
    CentOS VMware 下SSH配置方法详解
    15个nosql数据库
    MySql 优化
    Elasticsearch 相关名词理解
  • 原文地址:https://www.cnblogs.com/xleer/p/5288247.html
Copyright © 2020-2023  润新知