资讯专栏INFORMATION COLUMN

【数据结构和算法】顺序表涅槃重塑

cpupro / 2625人阅读

摘要:二顺序的定义顺序表示在计算机内存中以数组的形式保存的线性表,在内存中占用一组连续的存储单元,在此中依次存储各个元素。

 

目录

  一 、前言

二、顺序的定义

三、实现顺序表

3.1顺序表的API设计

3.2 顺序表的代码实现

插入示意图 :

3.3完整的API概览: 

四、顺序表的测试:


一 、前言

顺序表常用的一种,学习并了解显得十分重要,顺序表为以后的学习打下了基石。

二、顺序的定义

顺序表示在计算机内存中以数组的形式保存的线性表,在内存中占用一组连续的存储

单元,在此中依次存储各个元素。

 

三、实现顺序表

3.1顺序表的API设计

3.2 顺序表的代码实现

定义一个泛型类(泛型类的好处就是可以接受任意类型)

//定义一个泛型类public class SequenceList {}

在泛型类中定义成员变量

 //定义一个存储元素的数组(先定义为泛型)    private T[] eles;    //定义一个变量表示顺序表中的元素个数    private int N;

定义构造方法,用来给成员变量初始化

   //添加构造方法,用来初始化成员变量    public SequenceList(int capacity) {//接受一个容量长度        //初始化数组        this.eles = (T[]) new Object[capacity];//创建的是Object类型的所以需要强转为T[]        //初始化顺序表的长度        this.N = 0;    }

下面进行功能实现:

将线性表置为空表

     // 将一个线性表置为空表    public void clear(){        //只需将顺序表的长度变为0即可        this.N=0;     }     //我们使用this的原因是:一定指的是成员变量,防止有局部变量和成员变量同名。     //只要涉及到成员变量尽量用this修饰    

 

判断线性表是否为空表

    //判断当前线性表是否为空表    public boolean isEmpty(){        //是否为空只需要判断线性表中的元素个数        return this.N==0;    }

获取线性表的长度

   //获取线性表的长度    public int length(){        //只需返回N即可        return this.N;    }

获取i位置的元素

    //获取指定i位置的元素    public T get(int i){        //因为顺序表是一个数组,只需要通过索引找到该元素即可        return eles[i];    }

向线性表中添加元素t

//向线性表中添加元素t    public void insert(T t){//T表示的元素的类型        //这个表示非常的巧妙,将元素加1的同时又将索引N的位置赋值了元素        eles[N++]=t;        //这个表示等价于eles[N]=t;N++;    }

在索引i处插入元素t

    //在i元素初插入元素t    public void insert(int i,T t){        //先把i索引处的元素及其后面的元素依次向后移动一位        for (int index=N;index>i;index--){            //依次把前一位的值给后一位            eles[index]=eles[index-1];        }        //再把t元素放到i索引处,数组长度加1           eles[i]=t;           N++;    }

插入示意图 :

 删除指定位置i处的元素,并返回该元素

    //删除指定位置i处的元素,并返回该元素    public T remove(int i){        //先定义个一变量记录i位置的元素,后续用来返回该值        T current=eles[i];        //索引i后面元素依次向前移动一位        for (int index=0;index

返回元素t第一次出现的值

   //查找元素t第一次出现的位置    public int indexOf(T t){        for (int i=0;i

3.3完整的API概览: 

//定义一个泛型类public class SequenceList {    //定义一个存储元素的数组(先定义为泛型)    private T[] eles;    //定义一个变量表示顺序表中的元素个数    private int N;    //添加构造方法,用来初始化成员变量    public SequenceList(int capacity) {//接受一个容量长度        //初始化数组        this.eles = (T[]) new Object[capacity];//创建的是Object类型的所以需要强转为T[]        //初始化顺序表的长度        this.N = 0;    }       // 将一个线性表置为空表    public void clear(){        //只需将顺序表的长度变为0即可        this.N=0;        //我们使用this的原因是:一定指的是成员变量,防止有局部变量和成员变量同名。    }    //判断当前线性表是否为空表    public boolean isEmpty(){        //是否为空只需要判断线性表中的元素个数        return this.N==0;    }    //获取线性表的长度    public int length(){        //只需返回N即可        return this.N;    }    //获取指定i位置的元素    public T get(int i){        //因为顺序表是一个数组,只需要通过索引找到该元素即可        return eles[i];    }    //向线性表中添加元素t    public void insert(T t){//T表示的元素的类型        //这个表示非常的巧妙,将元素加1的同时又将索引N的位置赋值了元素        eles[N++]=t;        //这个表示等价于eles[N]=t;N++;    }    //在i元素初插入元素t    public void insert(int i,T t){        //先把i索引处的元素及其后面的元素依次向后移动一位        for (int index=N;index>i;index--){            //依次把前一位的值给后一位            eles[index]=eles[index-1];        }        //再把t元素放到i索引处,数组长度加1            N++;eles[i]=t;    }    //删除指定位置i处的元素,并返回该元素    public T remove(int i){        //先定义个一变量记录i位置的元素,后续用来返回该值        T current=eles[i];        //索引i后面元素依次向前移动一位        for (int index=0;index

四、顺序表的测试:

public class SequenceListText {    public static void main(String[] args) {        //创建对象,指定类型        SequenceList sl=new SequenceList(10);        //插入元素        sl.insert("孔超");        sl.insert("刘诗劲");        sl.insert(0,"孙嘉辉");        //获取元素        String s=sl.get(0);        System.out.println(s);//孙嘉辉        //删除元素        String remove1=sl.remove(0);        System.out.println(remove1);        //清空元素        sl.clear();        System.out.println(sl.length());//0    }}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/124053.html

相关文章

  • 运营商怎样借云计算重塑新增长极?

    摘要:也正因为如此,国内云计算市场竞争日趋激烈。简而言之,运营商发展云计算的最大优势在于云网协同的差异化优势。当然,安全是所有应用的基础元素,运营商务必在保障云计算安全的基础之上,提供个性化的云服务。  双11不仅属于电商和消费者,还属于各行各业,云计算产业是其中之一。2016年天猫双11再创覆盖235个国家和地区的1207亿元新纪录,阿里云也交出亮眼成绩单:截至11月11日24时,阿里云双11全...

    Anleb 评论0 收藏0
  • JS数据结构算法_链表

    摘要:上一篇数据结构与算法栈队列下一篇数据结构与算法集合字典写在前面说明数据结构与算法系列文章的代码和示例均可在此找到上一篇博客发布以后,仅几天的时间竟然成为了我写博客以来点赞数最多的一篇博客。 上一篇:JS数据结构与算法_栈&队列下一篇:JS数据结构与算法_集合&字典 写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 上一篇博客发布以后,仅几天的时间竟然成为了我写博客以...

    NeverSayNever 评论0 收藏0
  • 未来五年内将重塑数据技术的五种趋势

    摘要:所谓大数据及其相关技术在经历了高度重视详细甄别以及吐故纳新之后,实际成果很可能与我们的认知存在较大差异。他们将探讨与大数据相关的各类话题,内容涵盖对抗贩卖人口未来发展方向乃至人工智能前沿技术。 请大家不要再纠结于一块磁盘能保存多少数据或者企业到底会不会采用Hadoop。关于大数据的真正问题在于,企业用户将如何使用Hadoop、我们的系统到底能在智能化道路上走多远、我们又该如何保证这一切都处于...

    learn_shifeng 评论0 收藏0
  • 云计算催生IT产业投资新机会

    摘要:云计算是技术进步时代发展的产物。云计算的出现,将重塑产业格局。产业变局催生投资机会正是云计算板块重塑了产业格局,其拥有了两个较为清晰的投资机会一是云计算产业高速发展所带来的新增市场容量。另外,云计算的蓬勃发展也将推动人工智能的产业化。 云计算是技术进步、时代发展的产物。在电脑刚被发明时,还没有网络,每台电脑(PC),就是一台拥有CPU、操作系统和应用软件等设备的单机。单机与单机之间,可...

    canger 评论0 收藏0
  • 国产品牌领跑高端服务器市场 云计算重塑行业竞争格局

    摘要:长久以来,惠普戴尔都是服务器市场的老三样,但云计算时代的到来,使得服务器行业的竞争格局发生了翻天覆地的变化,国产品牌正从追赶者转变为引领者。国产品牌正在全球高端服务器领域发挥着越来越重要的作用。长久以来,惠普、戴尔、IBM都是服务器市场的老三样,但云计算时代的到来,使得服务器行业的竞争格局发生了翻天覆地的变化,国产品牌正从追赶者转变为引领者。国产品牌正在全球高端服务器领域发挥着越来越重要的作...

    fevin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<