精华内容
下载资源
问答
  • 常见抽象数据类型

    千次阅读 2019-03-27 15:48:25
    一、栈 结构:栈顶、栈底 特点:后进先出。从栈顶压入栈,从栈顶压出栈 二、队列 1、队列 结构:队头、队尾 特点:先进先出。从队尾入队列,从队头出队列 2、双端队列 结构:队头、队尾 特点:队头队尾均可入队/出队...

    一、栈

    结构:栈顶、栈底
    特点:后进先出。从栈顶压入栈,从栈顶压出栈

    二、队列

    1、队列

    • 结构
      队头、队尾
    • 特点
      先进先出。从队尾入队列,从队头出队列

    2、双端队列

    结构:队头、队尾
    特点:队头队尾均可入队/出队

    3、优先级队列

    三、树

    1、树

    结构

    • 一种分层的结构,由根节点 + 根节点的子孙节点(子树)组成

    重要概念

    • 节点
      根节点、内部节点、外部节点(叶子节点)
      父亲节点、兄弟节点、孩子节点(左孩子、右孩子)

    • 一对父子节点(u,v)
    • 路径
      指一系列的节点,其中任意两个连续的节点都是一条边
    • 深度
      节点祖先的个数,根节点的深度是0
    • 高度
      从叶子节点往上数的层数,叶子节点的高度是0

    • 同一深度的所有节点位于1层,根节点是第0层

    2、二叉树

    特点:每个节点最多有两个孩子节点(被称为左孩子或右孩子)

    2.1 满二叉树

    特点:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。

    2.2 完全二叉树

    特点:和满二叉树的区别是,它的最后一行可能不是完整的,但绝对是右方的连续部分缺失。即叶子结点只可能在最大的两层出现

    2.2.1 堆(headq)
    • 特点:
      堆是一颗完全二叉树
      除了根节点之外的每个位置,该位置中存储的键值大于等于其父节点的键值

    2、AVL树

    3、伸展树

    4、(2,4)树

    5、红黑树

    四、图

    1、图
    2、无向图
    3、有向图

    五、映射

    1、映射

    每个唯一的关键字(key)都被关联到对应的一个值(value)上。这种关系被称为映射(map)或关联数组。

    2、哈希表

    一种,支持使用键作为索引的结构,语法如M[key]

    2.1 哈希函数

    哈希函数 h :将每个键k映射到[0,N-1]区间内的整数,其中N是哈希表桶数组的容量

    • 哈希码
    • 压缩函数
    2.2 桶数组

    2.3 负载因子

    3、跳跃表

    六、集合

    展开全文
  • 抽象数据类型(ADT)是某种编程语言中与实现无关的数据类型的规范。 ADT的接口是根据类型和对该类型的一组操作定义的。 每个操作的行为取决于其输入和输出。 ADT没有指定如何实现数据类型。 这些实现细节对ADT的...
  • 1.1.2抽象数据类型举例

    千次阅读 2016-02-14 09:36:47
    java.lang.* 包下的抽象数据类型java标准库中的抽象数据类型I/O处理类的抽象数据类型面向数据类抽象数据类型(现实中的实例,通过面向对象的封装性包装)集合类抽象数据类型( bag, stack, queue )面向操作的抽象数据...

    这节主要介绍了几个抽象数据类型的例子

    * 几何对象

    * 信息处理对象

    * 字符串对象

    此外这本书中用到的数据类型可以分为以下几类

    1. java.lang.* 包下的抽象数据类型
    2. java标准库中的抽象数据类型
    3. I/O处理类的抽象数据类型
    4. 面向数据类抽象数据类型(现实中的实例,通过面向对象的封装性包装)
    5. 集合类抽象数据类型( bag, stack, queue )
    6. 面向操作的抽象数据类型( 路径广度优先算法, 深度优先算法 )
    7. 图算法相关的抽象数据类型(无向图, 有向图)

    1:几何对象

    为3种常见的几何对象定义了抽象数据类型,这3中几何对象是Point2D(平面上的点), Interval1D(直线上的间隔),Interval2D(平面上的间隔,即和数轴对齐的长方形)

    • Point2D的API

               

    • Interval1D的API

               

    • Intrval2D的API

               


    下面是3个API的综合用例(在控制台上绘出一个长方形,计算随机分布的10000个点有多少个落在该长方形内)

    import java.util.Scanner;
    
    import edu.princeton.cs.algs4.Interval1D;
    import edu.princeton.cs.algs4.Interval2D;
    import edu.princeton.cs.algs4.Point2D;
    
    public class Test {
    	public static void main(String[] args) {
    		double xlo = Double.parseDouble(args[0]);
    		double xhi = Double.parseDouble(args[1]);
    		double ylo = Double.parseDouble(args[2]);
    		double yhi = Double.parseDouble(args[3]);
    		int t = Integer.parseInt(args[4]);
    		
    		Interval1D xinterval = new Interval1D(xlo, xhi);
    		Interval1D yinterval = new Interval1D(ylo, yhi);
    		Interval2D box = new Interval2D(xinterval, yinterval);
    		box.draw();
    		
    		Counter c = new Counter();
    		for(int i = 0; i < t; i++) {
    			double x = Math.random();
    			double y = Math.random();
    			Point2D point = new Point2D(x, y);
    			
    			if(box.contains(point))
    				c.increment();
    			else
    				point.draw();
    		}
    		
    		System.out.println("落在矩形内的点有" + c.getCount() + "个");
    		System.out.println("该矩形的面积为:" + box.area());
    	}
    }
    

    public class Counter {
    	private int count;
    	
    	public void increment() {
    		this.count++;
    	}
    	
    	public int getCount() {
    		return this.count;
    	}
    }
    

    运行得到的结果如下



    2:信息处理对象

    面向对象编程一个很重要的思想就是“一切皆为对象”,如下例子,封装了一个Date类

    class Date {
    	private int year;
    	private int month;
    	private int day;
    	
    	public Date(int year, int month, int day) {
    		this.year = year;
    		this.month = month;
    		this.day = day;
    	}
    
    	public int getYear() {
    		return year;
    	}
    
    	public int getMonth() {
    		return month;
    	}
    
    	public int getDay() {
    		return day;
    	}
    
    	@Override
    	public String toString() {
    		return "Date [year=" + year + ", month=" + month + ", day=" + day + "]";
    	}
    
    	@Override
    	public int hashCode() {
    		final int prime = 31;
    		int result = 1;
    		result = prime * result + day;
    		result = prime * result + month;
    		result = prime * result + year;
    		return result;
    	}
    
    	@Override
    	public boolean equals(Object obj) {
    		if (this == obj)
    			return true;
    		if (obj == null)
    			return false;
    		if (getClass() != obj.getClass())
    			return false;
    		Date other = (Date) obj;
    		if (day != other.day)
    			return false;
    		if (month != other.month)
    			return false;
    		if (year != other.year)
    			return false;
    		return true;
    	}
    	
    	
    }



    展开全文
  • 类型名称 :二叉树 数据对象集 :一个有穷的结点集合。若不为空,则由根节点和其左、右二叉子树组成。 操作集: Boolean isEmpty(BinTree BT);//判别BT是否为空 voidTraversal(BinTree BT);//遍历,按某个...

    类型名称 :二叉树

    数据对象集 :一个有穷的结点集合。若不为空,则由根节点和其左、右二叉子树组成。

    操作集:

    Boolean isEmpty ( BinTree BT ); //判别BT是否为空
    void Traversal ( BinTree BT ); //遍历,按某个顺序访问每一个结点
    BinTree CreatBinTree ();      //创建一个二叉树
    //常见的遍历方法有:
    void PreOrderTraversal ( BinTree BT ); //先序 ----- 根 、左子树、右子树
    void InOrderTraversal ( BinTree BT ); //中序 ----- 左子树、根、右子树
    void LevelOrderTraversal ( BinTree BT ); //后序遍历-----左子树、右子树、根


    (1)先序遍历

    遍历过程:1、访问根节点 。2、访问左子树。3、访问右子树。 

    void PreOrderTraversal(BinTree BT)
    {
    	if(BT){
    		printf("%d",BT->Data);
    		PreOrderTraversal(BT->Left); 
    		PreOrderTraversal(BT->Right);
    	}
    }


    (2)中序遍历

    遍历过程:1、访问左子树。2、访问根节点。3、访问右子树


    void InOrderTraversal(BinTree BT) //中序遍历
    {
    	if(BT){
    		InOrderTraversal(BT->Left);
    		printf("%d",BT->Data);
    		InOrderTraversal(BT->Right);
    	}
    }
    (3)后序遍历

    遍历过程:1、访问左子树。2、访问右子树。3、访问根节点

    void LevelOrderTraversal(BinTree BT)//后序遍历
    {
    	if(BT){
    		LevelOrderTraversal(BT->Left);
    		LevelOrderTraversal(BT->Right);
    		printf("%d",BT->Data);
    	}
    } 
    中序遍历的非递归算法

    void InOrderTraversal( BinTree BT )
    { 
    	BinTree T = BT;
    	Stack S = CreatStack( MaxSize ); /*创建并初始化堆栈S*/
    	while( T || !IsEmpty(S) ){
    		while(T){ /*一直向左并将沿途结点压入堆栈*/
    		Push(S,T);
    		T = T->Left;
    		}
    		if(!IsEmpty(S)){
    			T = Pop(S); /*结点弹出堆栈*/
    			printf(“%5d”, T->Data); /*(访问)打印结点*/
    			T = T->Right; /*转向右子树*/
    		}
    	}
    }


    先序遍历非递归算法

    void InOrderTraversal( BinTree BT )
    { 
    	BinTree T = BT;
    	Stack S = CreatStack( MaxSize ); /*创建并初始化堆栈S*/
    	while( T || !IsEmpty(S) ){
    		while(T){ /*一直向左并将沿途结点压入堆栈*/
    			Push(S,T);
    			printf(“%5d”, T->Data); /*(访问)打印结点*/
    			T = T->Left;
    		}
    		if(!IsEmpty(S)){
    			T = Pop(S); /*结点弹出堆栈*/
    			T = T->Right; /*转向右子树*/
    		}
    	}
    }




    展开全文
  • 用C语言实现了常见抽象数据类型线性表 栈 队列 二叉树 广义表 串 内部排序 二元组等,
  • 在Java中常见数据类型有哪些?

    千次阅读 2020-04-21 22:12:14
    在java中常见数据类型有哪些 ? 看图 看图 看图 重要的事情说三遍 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 内置数据类型 类型名称 字节、位数 ...

    在java中常见的数据类型有哪些 ?

    看图

    看图

    看图

    重要的事情说三遍

    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


    内置数据类型

    类型名称字节、位数最小值最大值默认值例子
    byte字节1字节,8位-128(-2^7)127(2^7-1)0byte a = 100,byte b = -50
    short短整型2字节,16位-32768(-2^15)32767(2^15 - 1)0short s = 1000,short r = -20000
    int整形4字节,32位-2,147,483,648(-2^31)2,147,483,647(2^31 - 1)0int a = 100000, int b = -200000
    lang长整型8字节,64位-9,223,372,036,854,775,808(-2^63)9,223,372,036,854,775,807(2^63 -1)0Llong a = 100000L,Long b = -200000L
    double双精度8字节,64位 double类型同样不能表示精确的值,如货币0.0ddouble d1 = 123.4
    float单精度4字节,32位在储存大型浮点数组的时候可节省内存空间不同统计精准的货币值0.0ffloat f1 = 234.5f
    char字符

    2字节,16位

    \u0000(即为0)\uffff(即为65,535)可以储存任何字符char letter = 'A';
    boolean布尔返回true和false两个值这种类型只作为一种标志来记录 true/false 情况;只有两个取值:true 和 false;falseboolean one = true
    数据类型的包装类?最大值、最小值详细描述
    基本类型:byte 二进制位数:8
    包装类:java.lang.Byte
    最小值:Byte.MIN_VALUE=-128
    最大值:Byte.MAX_VALUE=127
    
    基本类型:short 二进制位数:16
    包装类:java.lang.Short
    最小值:Short.MIN_VALUE=-32768
    最大值:Short.MAX_VALUE=32767
    
    基本类型:int 二进制位数:32
    包装类:java.lang.Integer
    最小值:Integer.MIN_VALUE=-2147483648
    最大值:Integer.MAX_VALUE=2147483647
    
    基本类型:long 二进制位数:64
    包装类:java.lang.Long
    最小值:Long.MIN_VALUE=-9223372036854775808
    最大值:Long.MAX_VALUE=9223372036854775807
    
    基本类型:float 二进制位数:32
    包装类:java.lang.Float
    最小值:Float.MIN_VALUE=1.4E-45
    最大值:Float.MAX_VALUE=3.4028235E38
    
    基本类型:double 二进制位数:64
    包装类:java.lang.Double
    最小值:Double.MIN_VALUE=4.9E-324
    最大值:Double.MAX_VALUE=1.7976931348623157E308
    
    基本类型:char 二进制位数:16
    包装类:java.lang.Character
    最小值:Character.MIN_VALUE=0
    最大值:Character.MAX_VALUE=65535

    基本数据类型——类型转换

          1):小类型的变量赋值给大类型,会自动转换

          2):大类型的变量赋值给小类型,强制转换

             语法:在变量前添加要转换的类型

     reg:int int = -1;

          short s = (short)i;
     


    引用数据类型?

    1、类(class)

             类是一个模板,它描述一类对象的行为和状态。

    2、接口(interface)

             intenface 关键字
             在接口中所有方法都是public abstract可省可不省
             理解:接口本身没有实现任何功能,接口表- -种能力 ,拓展很方便(通过此口实现具体的功能)
             - 接口是一种约定(体现在名称和注释.上)
             - C#中不允许写public static
             接口不能包含字段,但可以包含属性使用: 实现

     

             接口的特性?

                      public static final
                      接口是一个特殊的抽象类
                      接口中的属性都是公共的静态的常量
                      接口中的方法都是公共的抽象方法
                      接口跟抽象类-样不能被实例化。
                      接口不能被final修饰
                      接口中没有构造方法
                      接口来定义功能
                      java中只支持单继承(只能有一个父类)
                      接口可以多实现(相当于继承了多个父类)弥补了单向继承的缺点!

    3、数组(array)

             语法:数据类型[] 数组名称= new 数据类型[数组长度];

             举例:int [] s1= new int[8];

             使用for循环和增强for循环(for-Each)遍历

                     for循环: for (int i = 0; i < size; i++) { total += myList[i]; }

             增强for循环:for(type element: array){System.out.println(element);}

    4、String

             字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。

             举例:String  a="中国很伟大!";

             注意:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了(详看笔记部分解析)。

             如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类

             获取字符串的长度的方法  a.length();

             String也很强大,方法很多,查看更多请去菜鸟教程。https://www.runoob.com/

    5、集合 

             set、list(ArrayList,LinkList)、Map(HashMap)等等

             set是无序的,list有序,Map是  键值对类型(Key,value)

    6、StringBuffer

             对字符串进行修改,方法请详细参考https://www.runoob.com/java/java-stringbuffer.html

    展开全文
  • Java知识体系最强总结(2021版)

    万次阅读 多人点赞 2019-12-18 10:09:56
    基础知识 并发理论 并发关键字 Lock体系 并发容器 线程池 原子操作类 并发工具 并发实践 数据结构与算法 数据结构 算法 排序算法 LeetCode 数据库 Oracle MySQL 数据库基础知识 数据类型 引擎 索引 三大范式 常用SQL...
  • 这是数据结构中的常见数据类型定义,里面实现了集合的一些基本操作,例如交并等。
  • 面向对象系统由一组交互的对象构成,每个对象都有自己的属性与行为,这些对象通过相互之间的信息传递实现系统...对象所属的类型被称为类,类是对于一组具有相同属性和行为的对象的抽象。本文初探C++的类和对象。  ...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些...Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...
  • 2020最新Java常见面试题及答案

    万次阅读 多人点赞 2019-10-26 15:53:35
    Java最新常见面试题 + 答案汇总 1、面试题模块汇总 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、...
  • MyBatis面试题(2020最新版)

    万次阅读 多人点赞 2019-09-24 16:40:33
    整理好的MyBatis面试题库,史上最全的MyBatis面试题,MyBatis面试宝典,特此分享给大家 MyBatis 介绍 MyBatis 是一款优秀的...MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plai...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    String 属于基础的数据类型吗? String 不属于基础类型,基础类型有 8 种:byte、boolean、char、short、int、float、long、double,而 String 属于对象。 7. java 中操作字符串都有哪些类?它们之间有什么区别? ...
  • 基本数据类型和封装类型的区别

    千次阅读 多人点赞 2019-09-23 13:27:34
    基本数据类型和封装类型的区别基本数据类型基本数据类型介绍封装数据类型基本数据类型对应的封装类介绍基本数据类型与封装类对应关系对照表String类他们的区别总结合理的创建标题,有助于目录的生成如何改变文本的...
  • 抽象数据类型与类层次(一)

    千次阅读 2016-02-16 10:04:59
    本系列文章主要学习抽象数据类型(Abstract Data Types)的基本知识和使用C++类层次(Class Hierarchy)来表示各种抽象数据类型。  本文主要介绍一些基本概念:抽象(Abstract)、ADTs、设计模式(Design Patterns...
  • 常见JVM面试题及答案整理

    万次阅读 多人点赞 2019-08-26 11:35:04
    局部变量表又包含基本数据类型,对象引用类型 如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常,方法递归调用产生这种结果。 如果Java虚拟机栈可以动态扩展,并且扩展的动作已经尝试...
  • 寄存器数据类型 Verilog中规定,凡是在程序块中被赋值的变量,都必须是寄存器类型的。(程序块:例如always块) 这里未免还是会让人产生疑惑?寄存器数据类型的变量最后一定会被综合成寄存器吗? 对应于实际的...
  • opencv中的几种常见的图像数据类型

    千次阅读 2016-07-13 09:45:19
    1 opencv中的几种常见的图像类型 ...是一个抽象基类,在函数原型中,常见到CvArr(CvArr*),这就允许吧CvMar* 或者IplImage* 传递到程序或函数参数中了。 CvMat : 矩阵结构, IplImage : 是较老版本的一种类型
  • 前端面试题(持续更新中)

    万次阅读 多人点赞 2019-11-06 17:16:33
    前端面试题 1.闭包 闭包就是能够读取其他函数内部变量的函数。 闭包的缺点:滥用闭包函数会造成内存泄露,因为闭包中引用到的包裹函数中定义的变量都 永远不会被释放,所以我们应该在必要的...引用数据类型:Objec...
  • java面试题2019_java面试题及答案_java面试题库

    千次阅读 多人点赞 2019-05-16 09:31:30
    JAVA 中的几种基本数据类型是什么,各自占用多少字节 109、 java中接口有什么用 110、 说说tcp/ip协议 111、 TCP与UDP的区别 112、 String的split(String regex)方法参数能直接传.吗 113、 什么是Java虚拟机?...
  • Shiro

    万次阅读 多人点赞 2019-04-29 21:12:26
    常见单词说明6.Shiro中的shiro.ini说明:(1) 、main(2)、users(3)、roles(4)urls6.第一个案例:①项目总体图:添加依赖:②添加shiro.ini文件③认证操作:④实现: 一、初识shiro 1.shiro简介: 官网 ...
  • 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与 String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11....
  • Java集合面试题

    万次阅读 多人点赞 2019-06-25 14:46:19
    Java集合面试题 Java 集合框架的基础接口有哪些...这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。 List ,是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List 更像长度动态...
  • 第二章 什么是数据抽象

    千次阅读 2017-06-25 15:10:24
    数据抽象: 在忽略类对象间存在差异的同时, 展现了对用户而言最重要的特性。的确, 抽象应该对终端用户隐藏无关紧要的细节, 避免暴露有可能分散用户注意力或与使用环境毫不相干的细节● 设计 , 或者说抽象, ...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    大家注意,这里我们实际定义了一个新的数据类型,为用户自己定义的数据类型,是对个人的特性和行为的描述,他的类型名为Person,和int,char等一样为一种数据类型。用定义新数据类型Person类的方法把数据和处理数据...
  • 《数据库原理》— 数据库系统概论第五版习题解析

    万次阅读 多人点赞 2017-05-29 14:57:48
    (l)数据(Data):描述事物的符号记录称为数据数据的种类有数字、文字、图形、图像、声音、正文等。数据与其语义是不可分的。解析在现代计算机系统中数据的概念是广义的。早期的计算机系统主要用于科学计算,处理...
  •  我们提出的弹性分布式数据集(RDDs),是一个让程序员在大型集群上以容错的方式执行基于内存计算的分布式内存抽象。RDDs受启发于两类使用当前计算框架处理不高效的应用:迭代算法和交互式数据挖掘工具。这二者在...
  • 基本数据类型基础

    千次阅读 2017-10-30 23:08:17
    如果你认为表达式(x += i)只是表达式(x = x + i)的简写方式,这并不准确。这两个表达式都被称为赋值表达式。... op (E2))),其中T是E1的类型,除非E1只被计算一次。  换句话说,复合赋值表达式自动地将
  • 本人最近找工作,在面试javase基础这里,有很多公司还是喜欢考察基本数据类型和包装类型的使用情况,重点就是考察日常生活中对数据类型的选定还有使用场景做考察,比如问基本数据类型的占几个字节,取值范围多少、...
  • 史上最全面Java面试汇总(面试题+答案)

    万次阅读 多人点赞 2018-07-06 14:09:25
    JAVA面试精选【Java基础第一部分】 JAVA面试精选【Java基础第二部分】 JAVA面试精选【Java基础第三部分】 JAVA面试精选【Java算法与编程一】 JAVA面试精选【Java算法与编程二】 ...Java高级工程师—面试(1)...数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 195,490
精华内容 78,196
关键字:

常见抽象数据类型