摘要: 二叉树的存储结构有两种。第一种是顺序存储结构。若对一棵具有n个结点的完全二叉树的所有结点按层从上到下,每层从左到右的顺序依次对结点从1开始编号,则编号为i的结点具有以下性质: 1.i=1的结点为二叉树的根结点。 2.如果i>1,则结点i的双亲结点编号为i/2(向下取整)。 3.如果2i<=n,则编号 阅读全文
posted @ 2017-06-15 16:06 NoviScl 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 用两个栈实现栈的思路如下:栈s1装新压入的元素,顺序是“倒过来的”(先进后出),要出栈的话就把s1存的元素倒入s2中,这时候s2中的元素的出栈顺序与队列的出队顺序相同。执行的步骤如下:1. 入队时,检测s1是否已满,未满则入栈。 2. 出队时,检测s2中是否还有元素,若不为空,直接出栈即可;若s2为 阅读全文
posted @ 2017-06-13 18:42 NoviScl 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 队列是一种元素先进先出(FIFO)的线性结构,与栈不同的是,队列在队尾插入元素,在队首删除元素。这里我们实现的是循环队列,以防止“假上溢”浪费空间。 阅读全文
posted @ 2017-06-13 15:34 NoviScl 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 地上从左到右竖立着 n 块木板,从 1 到 n 依次编号,如下图所示。我们知道每块木板的高度,在第 n 块木板右侧竖立着一块高度无限大的木板,现对每块木板依次做如下的操作:对于第 i 块木板,我们从其右侧开始倒水,直到水的高度等于第 i 块木板的高度,倒入的水会淹没 ai 块木板(如果木 阅读全文
posted @ 2017-06-13 14:35 NoviScl 阅读(851) 评论(0) 推荐(0) 编辑
摘要: 本文简单的设计了一个针对一位整数的四则运算进行求值的算法,对于处理多位整数的四则运算,需要对本文接受输入的数据类型进行升级,把字符数组换成字符串数组,将一个整数的多位数字存入一个字符串进行处理。 代码如下: 阅读全文
posted @ 2017-06-13 12:11 NoviScl 阅读(812) 评论(0) 推荐(0) 编辑
摘要: 栈是一种元素满足后进先出(LIFO)规则的线性表。一般来说,我们将表头称为栈底,表尾称为栈顶,栈的操作都是在栈顶进行的。 栈的基本操作如下: 阅读全文
posted @ 2017-06-13 01:10 NoviScl 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 单链表有环的情况如上图所示,循环链表也属于有环的链表。 这里我们使用追逐法判断一个链表是否有环:设置两个指针slow和fast从头节点开始,slow每次移动一个节点,fast每次移动两个节点,如果fast遇到了NULL则表明链表没有环,停止循环。如果链表有环的话,那么这两个指针总会在某个位置相遇,相 阅读全文
posted @ 2017-06-12 21:02 NoviScl 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 下面我们用循环列表模拟这个过程: 阅读全文
posted @ 2017-06-11 23:32 NoviScl 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 链表也是一种线性表,但与线性表不同的是,链表的物理存储结构是一堆地址任意的存储单元。也就是说,链表的数据在内存中的物理位置可能相互邻接,也有可能不邻接。 单链表的基本操作如下: 阅读全文
posted @ 2017-06-10 21:32 NoviScl 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 顺序表属于线性表的一种存储表现形式,在计算机内部表示为一段连续的内存空间,数组就是一种顺序表。 下面是顺序表的主要操作: 阅读全文
posted @ 2017-06-10 19:35 NoviScl 阅读(159) 评论(0) 推荐(0) 编辑