算法(三)-常用数据结构的定义

java实现

Posted by Lian YuTao on 2016-09-12
说明:文章的数据结构是基于Java总结的,java中使用的数据结构就是数组和引用(就是指针)

常用的数据结构有栈,队列,链表,树,图等的数据结构的定义。
个人觉得了解一种数据结构必须了解它的定义,明白了定义我们就知道如何去扩展。

栈 –>本质是数组

java中Stack类继承自Vector,而Vector的实现是基于数组的

队列 –>本质也是数组

Java中常用的队列就是PriorityQueue 其实现是基于数据的

链表一般会分为单链表,循环链表,双向链表

链表,链表顾名思义就是要连起来么,即当前数据应该了下一个数据是有关联的。
单链表的基本结构的定义

1
2
3
4
5
6
7
public class LinkList<T>{
T data;
LinkList<T> next;
public LinkList(T value){
this.data = value;
}
}

循环链表的数据结构和单链表相同,只是最后一个元素和第一个元素相连,单链表的最一个元素是null,

双向链表:从字面上理解可知道元素之间的关联是双向的,当前元素不仅和下一个有联系,应该和上一个元素也有关系。我们便可以在单链表的基础上修改成双链表,结构如下

1
2
3
4
5
6
7
8
public class LinkList<T>{
T data;
LinkList<T> next;
LinkList<T> pre;
public LinkList(T value){
this.data = value;
}
}

树中最重要的莫过于二叉树了,二叉树树的数据结构和链表是类似的(树的一种比较极端的例子就是一棵树只有左子树或者只有右子树,那么其就够就是链表,其本质是相同的区别就在于怎么连)。至于其它树的结构在二叉树的基础上扩展即可,不再详细赘述。

1
2
3
4
5
6
7
8
public class Tree<T>{
T data;
Tree<T> left;
Tree<T> right;
public Tree(T value){
this.data = value;
}
}

s