zoukankan      html  css  js  c++  java
  • 抽象数据类型

      抽象数据类型(abstract data type,ADT)是带有一组操作的一些对象的集合,对于集合ADT,一般有add、remove、cotains。当然也可以只要两种操作union和find,这两种操作又在这个集合上定义了一种不同的ADT

    表ADT

      表A0,A1,A2,...,An-1,表大小为n,大小为0的特殊表为空表

      除空表外的任何表,Ai后继Ai-1,Ai-1前驱Ai,A0无前驱,An-1无后继

    表的简单数组实现

      对表的所有操作都可以通过数组来实现,虽然数组是由固定容量创建的,但在需要的时候可以用双倍的容量创建一个新的数组

        int[] data = new int[10];
    
        int size = 0;
    
        void add(int a) {
            if (size > data.length - 1) {
                data = Arrays.copyOf(data, data.length * 2);
            }
            data[size++] = a;
        }
    
    
        int get(int index) {
            if (index > data.length - 1) {
                throw new IndexOutOfBoundsException("index:" + index + ",size:" + size);
            }
            return data[index];
        }

      数组表的插入和删除最坏情况O(N)

    简单链表

      为了避免插入和删除的线性开销,需要保证表可以不连续存储

      

      链表由一系列节点组成,这些节点不必在内存中相连,每一个节点均含有表元素和到包含该元素后继元素的节点的链(link),称为next链,最后一个节点的next链引用为null

      

      删除(remove)方法通过修改一个next链引用来实现

      插入(insert)方法new一个新节点,执行两次引用的调整

      

      

  • 相关阅读:
    MATLAB 之 App designer 小白学习(四)
    MATLAB 之 APP DESIGNER 学习(三)
    MATLAB 之 App designer 小白学习(二)
    MATLAB 之 App designer 小白学习(一)
    激光烧蚀 @有机聚合物
    激光驱动巨量转移工艺
    基于神经网络的函数逼近
    单片机复位电路仿真分析
    基于Python的3R机器人运动仿真
    基于MATLAB的单级倒立摆仿真
  • 原文地址:https://www.cnblogs.com/cmdra/p/5892636.html
Copyright © 2011-2022 走看看