java与数据结构

数组与链表

数组

  • 数组数据结构中的基本模块之一
  • 数组 是一种基本的数据结构,用于按 顺序 存储元素的集合 。但是元素可以随机存取,因为数组中的每个元素都可以通过数组 索引 来识别。
  • 数组 可以有一个或多个维度。
  • 数组 具有固定容量
  • 大多数编程语言都提供内置的 动态数组 ,它仍然是一个随机存取的列表数据结构,但 大小是可变的 。例如,在 C++ 中的  vector ,以及在 Java 中的  ArrayList

java与数据结构

java代码中它的具体表现形式为:

声明一个数组

double[]  myList; // 首选的方法 
//或 
double  myList[]; 
// 效果相同,但不是首选方法,该风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。

创建一个数组

int[] intArray =  new int[5];
float[] floatArray = new float[]{1F,2F,3F};

链表

  • 链表是由一组不必相连【不必相连:可以连续也可以不连续】的内存结构 【节点】,按特定的顺序链接在一起的抽象数据类型。
  • 链表中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。

单链表

单链表[Linked List]:由各个内存结构通过一个 Next 指针链接在一起组成,每一个内存结构都存在后继内存结构【链尾除外】,内存结构由数据域和 Next 指针域组成。

java与数据结构

  • Data 数据 + Next 指针,组成一个单链表的内存结构 ;
  • 第一个内存结构称为 链头,最后一个内存结构称为 链尾;
  • 链尾的 Next 指针设置为 NULL [指向空];
  • 单链表的遍历方向单一【只能从链头一直遍历到链尾】

在java代码中它的具体表现形式为:

public class Node<T> {  
    T data;   // data数据
    Node next;  // 指向下一节点
  
    Node(T data) {  
        this.data = data;  
    }  
}

双链表

双向链表[Double Linked List]:由各个内存结构通过指针 Next 和指针 Prev 链接在一起组成,每一个内存结构都存在前驱内存结构和后继内存结构【链头没有前驱,链尾没有后继】,内存结构由数据域、Prev 指针域和 Next 指针域组成。

java与数据结构

  • Data 数据 + Next 指针 + Prev 指针,组成一个双向链表的内存结构;
  • 第一个内存结构称为 链头,最后一个内存结构称为 链尾;
  • 链头的 Prev 指针设置为 NULL, 链尾的 Next 指针设置为 NULL;
  • Prev 指向的内存结构称为 前驱, Next 指向的内存结构称为 后继;
  • 双向链表的遍历是双向的,即如果把从链头的 Next 一直到链尾的[NULL] 遍历方向定义为正向,那么从链尾的 Prev 一直到链头 [NULL ]遍历方向就是反向;

在java代码中它的具体表现形式为:

public class Node<T> {  
    T data;   // data数据
    Node prev; // 指向上一节点 (前驱)
    Node next;  // 指向下一节点 (后继)
  
    Node(T data) {  
        this.data = data;  
    }  
}

循环链表

单向循环链表[Circular Linked List] : 由各个内存结构通过一个指针 Next 链接在一起组成,每一个内存结构都存在后继内存结构,内存结构由数据域和 Next 指针域组成。

在java代码中它的具体表现形式为:

可参考下面这篇博客

https://blog.csdn.net/u013393…

双向循环链表[Double Circular Linked List] : 由各个内存结构通过指针 Next 和指针 Prev 链接在一起组成,每一个内存结构都存在前驱内存结构和后继内存结构,内存结构由数据域、Prev 指针域和 Next 指针域组成。

java与数据结构

在java代码中它的具体表现形式为:

可参考下面这篇博客

https://blog.csdn.net/u014039…

未完待续

原文 

https://segmentfault.com/a/1190000021481024

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » java与数据结构

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址