数据结构与算法
文章平均质量分 92
想种胡杨
这个作者很懒,什么都没留下…
展开
-
数据结构与算法简述
一、数据结构(Data Structure)1. 概念:表示一组数据在计算机中是如何存储的,指相互之间存在一种或多种特定关系的数据元素的集合。2. 分类:① 逻辑数据结构:反映元素之间逻辑关系,与具体如何存储无关。集合结构:线性结构:典型代表数组、链表树形结构:典型代表二叉树图形结构:② 物理数据结构:数据在OS(操作系统)中的存储方式。顺序结构:元素在OS中是顺序存储...原创 2019-03-26 17:42:09 · 506 阅读 · 0 评论 -
堆的创建、插入、删除以及堆排序算法总结
在说堆的概念之前先说一下关于树和二叉树的一点儿知识~~1. 树树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,叶子朝下的。1.1 树的特点:每个节点有零或多个子节点没有父节点的节点称为根节点每个非根节点有且仅有一个父节点除了根节点外,每个子节点可以分成多个不相交的子树1.2 树...原创 2019-06-17 12:04:00 · 1483 阅读 · 2 评论 -
栈和队列的相互实现
1. 用两个栈实现一个队列package com.github.jihaojiemo.queue;import java.util.Stack;/** * Description: 两个栈实现一个队列 * Author: Administrator * Date: 2019/6/1 * Time: 15:32 */public class TestMyQueue { ...原创 2019-06-01 15:47:57 · 152 阅读 · 0 评论 -
二叉树的前序、中序、后序、层序遍历 -- 递归及非递归解法
其实二叉树的遍历方式不仅仅只有我们常说的前序遍历、中序遍历和后序遍历,还有一种遍历方式叫做层序遍历,即按照二叉树的每一层顺序打印各个节点。 下面将通过代码来实现这四种遍历:public class TestBinaryTree { class TreeNode { char value; TreeNode left; TreeNod...原创 2019-06-12 17:04:58 · 179 阅读 · 0 评论 -
不带头双向链表的实现 --(外加对如何判断内存是否泄漏的一点儿说明)
package com.bittech.DoubleLinked;public class DoubleLinkedList { class Node { private Node prev; private int data; private Node next; public Node(int data) {...原创 2019-05-23 11:24:07 · 245 阅读 · 0 评论 -
带头循环单链表的实现
带头循环单链表相较于不带头非循环单链表而言,下图给出了它的示意图,可以看出:它多了一个头结点,还有既然它是循环的,那么它的尾节点就不再指向null了,而是指向头结点。 以下是带头循环单链表的Java语言实现:package com.circlelinked;public interface ICLinked { //头插法 void addFirst(int dat...原创 2019-05-23 09:31:56 · 369 阅读 · 0 评论 -
LeetCode 142. 单链表如何寻找环的入口点(绝对是史上最简单的解法!)
关于带环单链表找入环点的问题,这个问题确实挺难的,网上的大多数解法都看不懂。研究了一下发现了一个更好的解法,其实算法并不是太难,就是得稍微推导一下。以下是推导过程:package com.bittech.Linked;public class MySingleListImpl { class Node { private int data; pr...原创 2019-05-16 16:42:35 · 4072 阅读 · 0 评论 -
单链表反转
package com.bittech.Linked;public class MySingleListImpl { class Node { private int data; private Node next; public Node(int data) { this.data = data; ...原创 2019-05-16 14:52:07 · 174 阅读 · 0 评论 -
单链表 -- 删除重复结点,重复的结点不保留
题目中说得很清楚:排序的链表,那么如果存在重复元素的话,一定是紧挨着的,要么重复的是两个要么是多个。package com.Linked;public class MySingleList { class Node { private int data; private Node next; private Node(int da...原创 2019-05-20 20:59:38 · 358 阅读 · 0 评论 -
顺序表的基本操作
先用一张图来简单的说明一下顺序表和其他数据结构之间的关系:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构。一般情况下是通过数组实现的。即逻辑上和物理上都是连续的。 顺序表一般分为:静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储,增容一般是呈2倍的增长,而且需要申请新空间,拷贝数据,释放旧空间,因此会有不小的消耗。package com.bittec...原创 2019-05-07 18:23:28 · 2203 阅读 · 0 评论 -
不带头非循环单链表的实现
1. 什么是链表用一组地址任意的存储单元存放线性表中的数据元素,即逻辑上连续,物理上不一定连续。在顺序表的链式存储结构中,每个存储的节点不仅包含数据元素本身(称之为数据域),而且还包括此节点的后继节点的地址信息(称之为指针域)。一般地,每个节点可以有一个或多个这样的指针域,如果某个节点中的某个指针域不再需要指向任何节点,则它的值为null。2. 什么是单链表在每个节点中除了包含数据域 (d...原创 2019-05-14 16:52:54 · 313 阅读 · 0 评论 -
七大经典排序算法 -- 比较排序(附加排序动图演示)
1. 常见排序算法分类所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。内部排序:数据元素全部放在内存中的排序。 (本篇博客讲的都属于内部排序~)外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,若两个相同的数排完序之后还能保持原有...原创 2019-06-23 23:49:42 · 1274 阅读 · 1 评论