数据结构基础

本文探讨了在Java研发中数据结构的重要性,并详细讲解了顺序存储结构和链式存储结构。顺序存储以数组为代表,允许随机存取,但插入和删除操作复杂。链式存储通过链表实现,插入和删除效率高,是数据结构中的重要概念。
摘要由CSDN通过智能技术生成

在Java研发工程师招聘中,数据结构与算法是必考的题目,不久看到一篇文章《为什么面试总喜欢考算法题》提到:面试考算法是一个基准点,因为算法是计算机学科中最基础的学科。本着不死也脱层皮的想法就买了本算法书开始啃,虽然其中很多题目我就是想破脑汁也想出来,可我居然能沉浸在这样的状态中自得其乐。“算法虐我千百遍,我仍待它如初恋”。

顺序存储结构

顺序存储结构数据存在内存地址连续的一块区域,数组便是这种存储结构的典型表现。由于是在一块的内存区域,只要确定第一个元素的内存地址,后面的元素就可以在这快区域上随机存取。下面的示意图展示了顺序存储结构在内存中的存储形式:

顺序存储结构

数组实现顺序存储结构

使用数组实现顺序存储结构的主要操作有:查找数据、插入数据和删除数据,其中插入数据和删除数据是本算法中更为核心的部分,因为在数组中要要插入一个数据,必须把数据往后面移动,而且还要考虑是否会出现数组下标越界的情况。删除操作也是一样,要从一个数组中删除一个数据不是不是一件易事(至少从计算机层面来讲是这样的),每次删除一个数据需要把数据往前面移动。下面请看核心代码实现:

    public class ListArray implements List {
   

    //数组容量
    private int len = 8;
    //数组中元素的个数
    private int size;
    //数组之间元素的比较策略
    private Strategy strategy;
    //用于装载数据元素的数组
    private Object[] elements;

    public ListArray(){
        this(new DefaultStrategy());
    }

    public ListArray(Strategy strategy) {
        this.strategy = strategy;
        size = 0;
        elements = new Object[len];
    }
    //获取第i位置上元素
    public Object get(int i) {
        if(i < 0 || i > size){
            System.out.println("下标越界,获取失败!");
            return null;
        }
        return elements[i];
    }
    //在第i个位置插入数据元素e
    public boolean i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值