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