
数据结构与算法 知识点
再听一遍就睡
这个作者很懒,什么都没留下…
展开
-
数据结构概述与动态数组
day1学习总结第一章 概述为什么要学习数据结构???我们是要用计算机解决问题,我们从具体问题中抽象出一个数据模型,设计可以解决这类模型的算法,然后在编写程序就可以得到一个实用的软件。数据:能够被计算机识别、存储和计算的东西都是数据(二进制)结构:数据与数据之间一种或多种特定的关系数据结构:数据+数据之间的关系(官方)数据结构是相互之间存在一种或多种特定关系的数据元素的集合数据结...原创 2019-09-08 00:00:26 · 188 阅读 · 0 评论 -
二叉树基本概述
前面已经介绍过树了。废话不多说,现在我们直接来看二叉树。1.二叉树的定义原创 2019-09-25 02:27:42 · 3880 阅读 · 0 评论 -
树的概述
树的概述原创 2019-09-24 16:28:42 · 200 阅读 · 0 评论 -
递归
什么是递归?递归,我们之前把它理解为函数调用函数它本身。递归作为一种重要的编程思想。在二叉树、图或者一些高级的排序算法中,我们都会运用到递归。所以,递归很重要!一、我们首先来看一下递归的定义:递归的能力在于用有限的语句来定义对象的无线集合。问题规模较大时,递归和循环对比的话,递归比循环的代码量更少。递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条...原创 2019-09-21 20:24:11 · 306 阅读 · 0 评论 -
单向循环链表
既然有线性表的链式存储结构,那么我们可以想到一定也有单向循环链表。下面让我们来看看单向循环链表。单向循环链表的本质就是让单链表的尾节点指针指向头结点,这样就可以让整个单链表形成一个环。这种头尾相连的单链表就叫做单向循环链表。为了方便操作,我们让头指针不再指向虚拟头结点,而是直接指向真实头结点,也就是链表中的第一个节点。此时单向循环链表因为存储结构的改变所以不能再用LinkedList ...原创 2019-09-20 16:23:56 · 1226 阅读 · 1 评论 -
队列的链式存储结构
之前写过队列和循环队列,这里就不再做多余的赘述了。队列的链式存储结构实现的关键点是让数据从尾进,从头出。这样插入和删除的时间复杂度都是O(1)了。当然队列的链式存储结构还是继承之前的Queue接口,实现LinkedList中的方法LinkedQueue类代码如下:public class LinkedQueue<E> implements Queue<E> { ...原创 2019-09-20 02:23:32 · 306 阅读 · 0 评论 -
栈的链式存储结构
我们不难发现。数据结构之间不是独立的关系,而是相互包含的关系。之前的线性表经过特殊的处理就可以变成栈、队列。之前已经讲过栈,这里就不用对栈在做解释了。我们直接来看栈的链式存储结构。1.LinkedStack类的定义LinkedStack类要实现之前写的Stack接口,然后这个类也是由栈的链式存储结构实现的。代码如下:public class LinkedStack<E>...原创 2019-09-20 00:32:46 · 234 阅读 · 0 评论 -
线性表的链式存储结构
前面学习过线性表的顺序存储结构。但它是有缺点的,最大的缺点就是插入和删除时需要移动大量元素。为了解决这个缺点,我们可以这样想。我们不再考虑元素的相邻位置,只让每个元素知道下一个元素的位置就可以合理的解决这个问题了。于是,我们有了链表这个概念。链表的节点分为两部分,为数据域和指针域。数据域存放数据元素信息,指针域存放其后继指针地址(即后继节点的存储位置)。我认为链表就好比是玩具的小火车一样,...原创 2019-09-19 23:32:29 · 810 阅读 · 0 评论 -
栈
栈定义:栈是限定仅在表尾进行插入和删除操作的线性表。我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。栈是一个线性表,但它是一种特殊的线性表。定义是在线性表的表尾进行插入和删除操作,但在这里表尾是指栈顶,而不是栈底。这中特殊就限定了这个线性表插入和删除...原创 2019-09-13 18:17:42 · 193 阅读 · 0 评论 -
队列
队列定义:队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列(Queue)是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端叫做队尾,删除的一端叫做队头。同样是线性表,队列也有类似的操作。不同的是队列是在队尾插入数据,在队头删除数据。队列的基本操作 1. getSize() 获取队列中有效元素的个数 2. isEmpty(...原创 2019-09-13 00:44:09 · 6631 阅读 · 0 评论 -
用递归实现单向链表
链表具有天然的递归性。如图:对于链表的递归我们可以理解为:对于任何一个节点,它后面可以挂接另一个链表。该节点的后继节点可以当成另外一个链表的头结点。在这里我们写的是单向循环链表的递归。同样的,它要实现我们之前写过的List接口的方法,并且要有一个节点的内部类。这里我们从虚拟头结点开始。1.LinkedListRecursion()类public class LinkedList...原创 2019-09-25 16:32:04 · 1359 阅读 · 0 评论