数据结构之线性表(Java)

本文介绍了数据结构中的线性表,包括线性表的顺序表示和链式表示。顺序表示使用地址连续的存储单元存储数据元素,便于随机存取,但插入和删除操作可能涉及大量元素移动。链式表示通过链式连接解决了这一问题,允许更灵活的插入和删除,但失去了随机存取的能力。文中还简要提到了线性链表、循环链表和双向链表的概念。
摘要由CSDN通过智能技术生成

Java写数据结构01

线性表

定义

​ 线性表是最常用且最简单的一种数据结构。简言之,一个线性表是n个数据元素的有限序列。在稍复杂的线性表中,一个数据元素可以有若干个数据项组成。在这种情况下,常把数据元素称为记录,含有大量记录的线性表又称文件。(为什么称为线性表,是因为符合线性结构:结构中的数据元素存在一个对一个的关系。而常见的非线性结构有:树,广义表,多维数组等等,他们都不是一对一的关系)

1.线性表的顺序表示

​ 线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素。假设线性表的每个元素需占用L个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置。则线性表中第i+1个数据元素的存储位置LOC(ai+1)和第i个数据元素的存储位置LOC(ai)之间满足下列关系:

LOC(ai+1) = LOC(ai) + L

一般说来,线性表的第i个数据元素ai的存储位置为:

​ *LOC(ai) = LOC(a1) + (i-1)L

​ (第i个存储位置就是第一个存储位置加上之间占用的(i-1)*L个存储单元)

线性表的这种机制称作线性表的顺序存储结构或顺序映像,通常,称这种存储结构的线性表为顺序表。换句话说,以元素在计算机内物理位置相邻来表示线性表中数据元素之间的逻辑关系。

代码表示:(用数组的方法)


public class SelfTest {
   
    private Object[] listItem;//存储位置
    private int curLen;//长度
    private int maxSize;//最大容量
    //1.顺序表的初始化
    SelfTest(int maxSize ){
   
        this.maxSize = maxSize;
        this.listItem = new Object[maxSize];
        this.curLen = 0;
    }
    //2.从顺序表依次插入值
    public void insert(Object data){
   
        if (curLen==maxSize){
   //每次插完都会加一直到满足最大容量
            System.out.println("顺序表已满");
        }else{
   
            listItem[curLen] = data;
            curLen++;//加完后要改变顺序表长度
        }
    }
    public int getCurLen(){
   
        return this.curLen;
    }
    //3.顺序表指定位置插入
    public void insertS(int index,Object data){
   
        if (curLen == maxSize){
   
            System.out.println("数组已满无法插入");
        }else{
   
            for (int i=curLen;i>index;i--){
   
                listItem[i] = listItem[i-</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值