基于Java实现数据逻辑结构

admin 2022年3月29日09:34:08评论1 views字数 3031阅读10分6秒阅读模式

Java实现逻辑结构

概念

数据结构表示的是计算机中的存储和组织形式,主要描述数据之间的位置关系等,选择合适的数据结构,可以提高程序的运行速率,减少存储空间。

数据的三种结构

  • 数据的逻辑结构:描述数据之间的逻辑关系 (集合、线性、树形和网状)
  • 数据的存储结构:主要描述数据元素之间的位置关系。(顺序、链式、索引和散列)
  • 数据的操作集合:主要描述如何实现数据结构

此次为大家着重介绍基于Java实现数据的逻辑结构。

数据的逻辑结构

  • 集合结构

    1. 成员是无序的;
    2. 成员只在集合中出现一次;
  • 线性结构

    1. 具有一对一关系的数据
    2. 存在前驱和后继
  • 树形结构

    1.数据间存在一对多关系

  • 网站结构

    1.数据间存在多对多的关系

基于Java实现数据逻辑结构

Array基于Java实现

特点:

  • 只能存储同一数据类型
  • 大小固定,不能动态扩容

基于Java实现数据逻辑结构查询实现:

//查询后返回的为该数在此数组中的下标
public int find(int searchKey){
   int i;
   for(i = 0; i < length; i++){
       if(intArray[i] == searchKey)
          break;
   }
   if(i == length){
       return -1;
    }
       return i;  //返回查找数据的索引下标
}

添加实现:

// elems为数组下标索引;length为数组长度
 public void add(int value){
   if(elems == length){
        System.out.println("error 数组已满");
        return;
   }
   intArray[elems] = value;
      elems++;
}

删除实现:

//删除实现主要是通过传递的参数,
//调用查询方法 查到了则执行删除 未查到则返回false。
public boolean delete(int value){
    int i = find(value);
    if(i == -1){
        return false;
    }
    for (int j = i; j < elems-1; j++) {
    //后面的数据往前移
        intArray[j] = intArray[j + 1];
    }
  elems--;
  return true;
}

更新实现:

 /**
   * @param oldValue  需要替换的数据
   * @param newValue  新的数据
   * @return 布尔值 更新成功返回ture 否则false
*/

public boolean update(int oldValue,int newValue){
     int i = find(oldValue);
     if(i == -1){
         return false;
     }
     intArray[i] = newValue;
     return true;
}

Stack基于Java实现

栈的特点

  • 最主要的是先进后出;
  • 是一种特殊的线性表,只能在表尾进行插入删除操作;
  • 栈的所有插入和删除只能在栈顶进行。

基于Java实现数据逻辑结构动态扩容

    public void grow(){
        if(top == maxSize-1){
            maxSize = maxSize<<1;
            objArray = Arrays.copyOf(objArray,maxSize);
        }
    }

出栈

   public Object objPop(){
        Object obj = peekTop();
        objArray[top--] = null;
        return obj;
    }

入栈

    public void objPush(Object obj){
        //扩容
        grow();
        objArray[++top] = obj;
    }

Queue基于Java实现

队列特点

先进先出的数据结构,类似于生活中的排队

使用Java实现常见的Queue方法

 //使用数组模拟一个arrayQueue类
class ArrayQueue{
    private int maxSize;
    private int front//队头
    private int rear; // 队尾
    private int arr[] ; // 数组 存放数据

    //创造队列的构造器
    public ArrayQueue(int arrmaxSize){
        maxSize = arrmaxSize;
        arr = new int [maxSize];
        front = -1//指向对头的前一个位置
        rear = -1//队尾的前一个位置
    }
    //判断队列是否满
    public  boolean isFull(){
        return rear == maxSize -1;
    }
    //是否为空
    public boolean isEmpty(){
        return rear == front;
    }
    //添加数据
    public void addQueue(int n ){
        if (isFull()){
            System.out.println("队列满!");
            return;
        }else {
            rear++; //后移
            arr[rear] = n;
        }
    }
    //出队列 获取数据
    public int getQueue(){
        //判断队列是否空
        if(isEmpty()){
            throw  new RuntimeException("队列为空!");
        }
        front++; //后移
        return arr[front];
    }
    //显示队列
    public void showQueue(){
        if (isEmpty()){
            System.out.println("无法便利!");
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
    //显示数据头
    public int headQueue(){
        //判断
        if (isEmpty()){
            System.out.println("为空!");
        }
        return arr[front+1];
    }

}

原文始发于微信公众号(小艾搞安全):基于Java实现数据逻辑结构

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月29日09:34:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基于Java实现数据逻辑结构https://cn-sec.com/archives/848241.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息