Java 数据结构-循序表

这篇博客是作者的数据结构复习记录,主要介绍了循序表的概念,它是一种线性表,结点在计算机内存中以连续的方式存储。文章通过图片直观展示了顺序存储结构与数组的相似性,并承诺会用Java代码演示如何实现循序表。
摘要由CSDN通过智能技术生成

数据结构 复习记录

初次编写博客,希望以后也能养成这种习惯,话不多说,下面来介绍一下循序表是什么。

循序表介绍

循序表 就是按照循序存储方式存储的线性表
该线性表结点按照逻辑次序依次放置在计算机的一组连续的存储单元当中

话不多说,直接上图
循序存储结构
我们可以直接看出,其实顺序存储结构就是我们平常使用到的数组
接下来我会用代码来演示如何实现顺序存储

使用Java实现循序表结构

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

package arraylist;

import java.util.Map;

/**
 * 顺序表简单实现
 * Created by Sheldon on 2019/3/29.
 * Project Name: alstudy.
 * Package Name: arraylist.
 */
 
// 数据对象
class Data{
    String key;
    String name;

    Data(String key, String name){
        this.key = key;
        this.name = name;
    }
}

// 循序表
public class ArrList {

    // 默认最大长度
    int Max = 100;
    // 对象数组
    Data[] ListData = new Data[Max];
    // 当前长度
    int ListSize;

    // 链表初始化
    ArrList(){
        ListSize = 0;
    }

    // 获取顺序表大小
    public int linkSize(){
        return ListSize;
    }

    // 链表容量检测 true(满了) false(没满)
    public boolean isFull(ArrList list){
        if (list.ListSize >= list.Max){
            return true;
        }else {
            return false;
        }
    }

    // 追加结点
    public boolean addNode(ArrList list, Data data){
        // 检测链表容量
        if (isFull(list)){
            return false;
        }
        // 在数据尾部插入
        list.ListData[list.ListSize++] = data;
        return true;
    }

    // 插入结点
    public boolean insertNode(ArrList list, int index, Data data){
        // 检测链表容量
        if (isFull(list)){
            return false;
        }
        // 查看下标是否越界
        if (index<0 || index>=list.ListSize){
            return false;
        }
        // 条件达成,则在对应位置插入数据
        list.ListData[index] = data;
        return true;
    }

    // 删除结点
    public boolean delNode(ArrList list, int index){
        // 查询结点是否越界
        if (index<0 || index>=list.ListSize){
            return false;
        }
        // 删除对应结点,数据向前位移
        for (int i=index; i < list.ListSize; i++){
            list.ListData[i] = list.ListData[i+1];
        }
        list.ListSize--;
        return true;
    }

    // 查找结点
    public void findNode(ArrList list, int index){
        // 查询结点是否越界
        if (index<0 || index>=list.ListSize){
            System.out.println("下标越界");
        }
        // 打印出数据
        System.out.println("key:"+list.ListData[index].key+" name:"+list.ListData[index].name+"\n");
    }

    // 显示所有结点
    public void findAllNode(ArrList list){
        for (int i=0; i<list.ListSize; i++){
            System.out.println("key:"+list.ListData[i].key+" name:"+list.ListData[i].name);
        }
    }

	// 测试代码
    public static void main(String[] args) {
        // 创建循序表数组对象
        ArrList list = new ArrList();
        // 添加结点
        list.addNode(list, new Data("1","小明"));
        list.addNode(list, new Data("2","小红"));
        list.addNode(list, new Data("3","小兵"));
        // 查询结点数量
        System.out.println(list.linkSize());
        // 打印单个结点
        list.findNode(list, 1);
        // 打印出所有结点
        list.findAllNode(list);
        // 删除结点
        list.delNode(list, 1);
        // 获取结点数量
        System.out.println(list.linkSize());
        // 打印所有结点
        list.findAllNode(list);
        // 修改其中一个结点
        list.insertNode(list, 0, new Data("1","小红"));
        // 再次打印查看
        list.findAllNode(list);
    }
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值