
数据结构类
不会街健的bboy不是一个好程序员
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单链表(数据结构)
什么是链表? 链表属于顺序表结构,链表由一个个节点组成。每一个节点 存放数据的同时,也指向下一个节点。 单链表 单链表的数据结构为: 这就是一个简单单链表的结构。 head(头节点引用),用于我们添加,插入,当然,头节点的data可以作为实际数据,也可以只作为一个头节点,数据域无效。单链表的最后一个节点的next指向null。 我们来简单实现一个带头节点链表,并且给它添加方法。 头插,尾插,删除指...原创 2019-10-20 20:33:16 · 670 阅读 · 0 评论 -
单链表扩展
我们来扩展一下单链表:实现以下比较特殊的方法 逆序输出链表 思路1:不断的遍历链表尾结点,遍历一次,删除一个尾结点,直到遍历到head为止。 思路2:链表遍历入栈,再出栈 思路3:递归方法 由于思路1和思路2非常简单,我们详细描述思路3 public static <E> void reversePrintList(SingleLinkedList<E>.Node<...原创 2019-10-25 00:20:34 · 935 阅读 · 0 评论 -
双向链表
双向链表 单链表的节点只有一个引用域,指向下一个节点,双向链表的节点则有两个引用域,一个指向前一个节点( pre ),一个指向后一个节点( next )。 图例: 我们主要实现与单链表不同的方法 public class DoublyLinkedList <E> { //双向链表 //无头节点 public Node<E> head; c...原创 2019-10-29 19:53:52 · 228 阅读 · 0 评论 -
栈
栈 栈的特性,像是一个存放核桃的窄口杯子,这个杯子口很窄只能进一个核桃,当我们向这个杯子里放核桃的时候只能一个一个放,我们想从杯子里拿核桃时,我们只能先获得最上层的核桃(也就是最晚放进去的核桃)。 这就是我们栈的特性:先进后出 图例: 我们利用上述的核桃杯子来举个例子 那么我们来实现一个栈。 顺序栈 利用数组实现: 在这里插入代码片public class newStack<E> {...原创 2019-10-29 21:46:53 · 116 阅读 · 0 评论 -
队列
什么是队列 队列的特性就如同生活中的排队,谁先排队,谁先处理各种事务(例如超市排队结账) 图例: 顺序队列 那么我们为了方便实现,我们定义两个指针,一个指向队尾( rear )一个指向队头(front) 图例 实现: 这里的出队front向后移动,而不是不动,所以会浪费空间,不过系统再实现队列的时候 public class newQueue<E> { E[] elemen...原创 2019-10-31 21:47:53 · 150 阅读 · 0 评论 -
栈与队列的应用扩展
利用两个栈实现一个队列 思路: 队列的性质是先进先出,但栈是先进后出,如果两个栈实现队列,那么我们如果能把第一个栈倒置进第二个栈,第二个栈的出栈,不就是出队了么。 利用这个思路,我们定义两个栈(s1,s2),一个存储数据(s1),一个辅助出队(s2)。 入队:就是进栈 出队:先把s1倒置进s2,s2出栈 也就是不断的给s2.push(s1.pop);直到s1为空时停止 然后保存s2的栈顶元素,同...原创 2019-11-02 21:05:46 · 228 阅读 · 0 评论 -
堆
什么是堆 堆实际上就是一颗二叉树,而这颗二叉树的特点就是父节点一定比子节点都大或者小。 堆分为大根堆或者小根堆。 大根堆 :根节点是整颗树的最大值 小根堆:根节点是整棵树的最小值 树的父亲与孩子节点的关系: 父节点为 i ,左孩子为2 * i ; 右孩子为 2 * i +1; 实现大根堆: 在这里插入代码片 ...原创 2020-02-24 00:59:07 · 122 阅读 · 0 评论 -
树
树与图是典型的非线性数据结构 那么什么是树呢? 最典型的就是书的目录了, 以《漫画算法》为例(tips:好书,强推!) 这就是一个树形结构,一个节点与若干个节点有父子关系。 树的定义:树(tree)是n(n >= 0)个节点组成的有限集。当 n = 0 时,称为空树。在任意一个非空树中,有如下特点。 1.有且仅有一个节点称为根节点。 2.当 n > 1 时,区域节点可分为 m (m ...原创 2020-03-16 22:54:37 · 277 阅读 · 0 评论