Java 数据结构 循序表

@[TOC](Java 数据结构-循序表)

数据结构 复习记录

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

循序表介绍

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

话不多说,直接上图

循序存储结构

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

使用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);
    }
}

运行结果:


在这里插入图片描述
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 上一篇《数据结构和算法之时间复杂度和空间复杂度》中介绍了时间复杂度的概念和常见的时间复杂度,并分别举例子进行...
    VV木公子阅读 4,503评论 2 26
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 7,369评论 0 17
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,484评论 4 61
  • [当你的能力还驾驭不了你的目标时,就应该沉下心来,历练。]图片.png 线性表(Linear List) 线性表是...
    zengsk阅读 1,142评论 0 1
  • 2018-11-12 姓名关秀娟 辽宁辽阳丛迪服装有限公司 【日精进打卡第250天】 【知~学习】 《六项精进》0...
    打酱油的_9973阅读 74评论 0 0

友情链接更多精彩内容