
韩顺平数据结构与算法
竹蜻蜓飞行
有些事情本来很遥远,你争取它就会离你越来越近,直到你实现它。
展开
-
Java实现线索二叉树
应用案例说明:二叉树存储一个白酒排名,进行中序线索二叉树。中序遍历的数列为 {8,4,2,5,1,6,3,7}。 1、 问题分析 当我们对上面的二叉树进行中序遍历时,数列为 {8,4,2,5,1,6,3,7} 但是 8,4,5,6,7 这几个节点的 左右指针,并没有完全的利用上. 如果我们希望充分的利用各个节点的左右指针, 让各个节点可以指向自己的前后节点,怎么办? 解决方案-线索二叉树 2、线索二叉树基本介绍 n 个结点的二叉链表中含有 n+1 【公式 2n-(n-1)=n+1】 个空指针域。利原创 2020-12-27 15:54:43 · 310 阅读 · 2 评论 -
用数组实现栈、用链表实现栈(Java语言)
前言 栈的介绍: 栈的英文为(stack) 栈是一个先入后出(FILO-First In Last Out)的有序列表。 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的 一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。 根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元 素最先删除,最先放入的元素最后删除 图解方式说明出栈(pop)和入栈(push)的概念: 栈原创 2020-12-22 23:15:44 · 194 阅读 · 0 评论 -
Java单向环形链表解决约瑟夫问题
Josephu(约瑟夫、约瑟夫环) 问题 Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。 提示:用一个不带头结点的循环链表来处理Josephu 问题:先构成一个有n个结点的单循环链表(单向环形链表),然后由k结点起从1开始计数,计到m时,对应结点从链表中删除,然后再从被删除结点的下原创 2020-12-13 19:56:59 · 308 阅读 · 0 评论 -
Java实现单链表
用一个单链表作为示例来存储一个白酒的排名:原创 2020-12-09 22:00:32 · 205 阅读 · 1 评论 -
数组模拟环形队列及其Java实现
将顺序队列想象成一个环形的空间,如图: 开始时,front和rear都指向第一个元素。 在这,我们定义: front指向第一个元素,rear指向最后一个元素的再后面一个。 取余运算: 初始时:front = rear = 0 队首指针进1: front = (front + 1)% MaxSize 队尾指针进1: rear = (rear + 1) % MaxSize 队列的长度: (rear + MaxSize - front)% MaxSize 牺牲一个单元来区分队空还是队满:入队时少用一个队列单元,原创 2020-12-08 21:59:28 · 239 阅读 · 0 评论 -
稀疏(sparsearray)数组及其Java实现
前言 我们先看一个五子棋盘: 用一个二维数组来记录它,发现二维数组上有很多0,只有一个1和一个2,那用这种方式存储这个五子棋盘就很浪费空间了。 在此,我们引入稀疏数组,它可以完整地记录上面这个棋盘,但规格小了很多: 这个稀疏数组是这样得来的: 第0行:二维数组有11行11列,其中值不为零的有2个数; 第1行:1行2列中有一个不为零的值为1; 第2行:2行3列中有一个不为零的值为2。 再举一个栗子: 得出稀疏数组的简单定义:矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律则称该矩阵为原创 2020-12-07 22:15:36 · 328 阅读 · 0 评论