转载

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
正文到此结束
Loading...