顺序表PK链表

这里写图片描述

最近发现了自己一个很严重的问题,在需要写一个集合的时候总是想也不想就去用ArrayList,需要用键值对的时候马上就想到了HashMap。(不要说我渣,我相信这样的程序员不在少数!)

这是一个非常不好的习惯,或者说,是一个无知者的习惯,一般情况下是不会出啥问题的,不过···是一般情况下。自从上次掉坑以后我深刻反思了一下自己。(什么坑我就不说了,反正很坑!)

当时学基础的时候这些集合都学过,相关的资料也看过不少,为啥到最后只脑子里只剩下HashMap,ArrayList 。还是因为自己没有搞懂他们内部是如何运作的,他们之间的区别以及他们的特性!

想要彻底搞定源码,数据结构的知识必不可少,因此小渣整理了一下线性表的知识。(引用某不知名CEO的一句话,掌握数据结构是从代码搬运工转向IT工程师的重要一步!)

以下仅代表个人观点,如有错误欢迎指正!

线性表

定义:由n(n≥0)个相同类型的数据元素(结点)组成的有限序列。

特点:

有一定顺序

数据个数是有限的

对于整个表,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他结点有且只有一个直接前趋和直接后继。

基本操作

public interface IIinarList<T> {
    void insertNode(T a,int i);//向指定位置插入元素
    void deleteNode(int i);//删除指定位置元素
    T searchNode(int i);//查找指定元素
    int getLength();//求表长度
    void clear();//清空操作
    boolean isEmpty();//判断线性表是否为空
}

线性表有两种实现方式,即顺序存储(顺序表)和链式存储(链表)

顺序表

定义:把线性表的结点按逻辑顺序一次存放在一组地址连续的存储单元中。

特点

地址连续。

想到连续地址,我们首先想到的肯定是数组了。

为了直观体现,这里我们使用数组实现。

ps:已经很努力简化代码了,可以先略过不看,到最后分析的时候再回来。

public class SeqList<T> implements ILinarList<T> {

    private int maxSize;    //当前顺序表最大容量
    private Object[] data;       //存放数据的数组
    private int length;     //当前表长度
    public int getMaxSize() {
        return maxSize;
    }

    public void setMaxSize(int maxSize) {
        this.maxSize = maxSize;
    }

    public Object[] getData() {
        return data;
    }

    public void setData(Object[] data) {
        this.data = data;
    }

    public void setLength(int length) {
        this.length = length;
    }

    //指定长度初始化线性表
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值