博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线性表(java)
阅读量:4954 次
发布时间:2019-06-12

本文共 3152 字,大约阅读时间需要 10 分钟。

线性表

概念:零个或者多个数据元素的有限序列。

特点:除了第一个元素没有前驱结点,最后一个元素没有后继结点外,其它元素有且仅有一个直接前驱和一个直接后继结点。元素的个数必定为有限个。

实现:

定义一个接口:

public interface List {    public void add(int index,Object element);//在指定下标添加元素    public boolean isEmpty();//判断线性表是否为空    public int size();//线性表中当前元素的个数    public Object get(int index);//获得指定下标的元素    public void remove(int index);//删除指定下标的元素}

实现线性表

public class SeqList implements List {    final static int defaultSize=10;//默认长度    int maxSize;//最大长度    int size;//当前元素的个数    Object []array;//存储线性表        //初始化    public SeqList(){        this(defaultSize);    }    public SeqList(int sz){        maxSize=sz;        this.size=0;        array=new Object[sz];    }    @Override    public void add(int index, Object element) {        if(index>size||index<0){            System.out.println("插入下标错误");        }        if(size==maxSize){            System.out.println("线性表已经满了,无法进行插入");        }                System.arraycopy(array, index, array, index+1, size-index);        array[index]=element;        size++;    }    @Override    public boolean isEmpty() {        return size==0;    }    @Override    public int size() {        return size;    }    @Override    public Object get(int index) {        if(index>size||index<0){            System.out.println("获得下标位置出错");        }        if(size==0){            System.out.println("线性表为空");        }        return array[index];    }    @Override    public Object remove(int index) {        if(size==0){            System.out.println("线性表为空");        }        if(index>size-1){            System.out.println("删除下标有误");        }        Object l=array[index];        System.arraycopy(array, index+1, array, index, size-index-1);        size--;        return l;    }    @Override    public void ensureCapacity(int minCapacity) {        // TODO Auto-generated method stub    }}

线性表的查找效率高,但是插入和删除要移动大量元素所以效率比较低。

 

ArrayList简易版实现

import java.util.Arrays;public class MyList implements List{    private int size;    private Object []array;        public MyList(){        this(10);    }        public MyList(int initCapacity) {        super();        if(initCapacity<=0){            throw new IllegalArgumentException("下标不正确!");        }else{            this.array=new Object[initCapacity];        }    }        @Override    public void add(int index, Object element) {        if(index<0||index>size){            throw new IllegalArgumentException("下标不正确!");        }        ensureCapacity(size+1);        System.arraycopy(array, index, array, index, size-index);        array[index]=element;        size++;    }    @Override    public boolean isEmpty() {        return size==0;    }    @Override    public int size() {        return size;    }    @Override    public Object get(int index) {        if(index<0||index
size-1){ System.out.println("删除下标有误"); } Object l=array[index]; System.arraycopy(array, index+1, array, index, size-index-1); size--; return l; } @Override public void ensureCapacity(int minCapacity) {//实现扩容 int oldCapacity=array.length; if(oldCapacity

 

转载于:https://www.cnblogs.com/coderising/p/5705137.html

你可能感兴趣的文章
python学习小结_190611
查看>>
near指针和far指针
查看>>
php Captcha 練習
查看>>
JAVA抓取一个HTML源代码
查看>>
实现搜索功能
查看>>
[mysql] 常用命令一
查看>>
centos7 安装python3.6 脚本
查看>>
linux一步一脚印---mkdir命令
查看>>
加密芯片那些事儿
查看>>
2017秋-软件工程第五次作业(1)-【探路者】团队选题展示
查看>>
REX:EOS资源租赁平台详解
查看>>
初识jmeter2
查看>>
1024. Palindromic Number (25)
查看>>
第六周 6.21-6.27
查看>>
selenium+python实现附件上传
查看>>
CSS实现响应式布局(自动拆分几列)
查看>>
微信公众平台开发教程
查看>>
react native第一天--------KnightRider
查看>>
C语言-文件操作
查看>>
FPGA数字信号处理(1)- AM调制的FPGA实现
查看>>