逝者如斯,不舍昼夜

尘世中一个迷途小书童,读书太少,想得太多
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  数据结构

摘要:表达式求值是程序设计语言编译中的一个基本问题,它的实现就是对“栈”的典型应用。本文针对表达式求值使用的是最简单直观的算法“算符优先法”。 本文给出两种方式来实现表达式求值,方式一直接利用中缀表达式求值,需要用到两个栈,操作数栈和操作符栈。首先置操作数栈为空栈, 操作符栈仅有“#”一个元素。依次读入表 阅读全文

posted @ 2016-11-28 14:27 SteveWang 阅读(8052) 评论(0) 推荐(0) 编辑

摘要:红黑树一直是数据结构中的难点,大部分关于算法与数据结构的学习资料(包括《算法导论》)对于这部分的讲解都是上来就下定义,告诉我们红黑树这个性质那个性质,插入删除要注意1234点,但是基本没有讲为什么这样定义红色和黑色,让人理解起来十分费力。直到我看了下图这本书中关于红黑树部分的讲解,一时间豁然开朗,上 阅读全文

posted @ 2016-06-04 16:46 SteveWang 阅读(3541) 评论(0) 推荐(2) 编辑

摘要:AVL树的基本概念 AVL树是一种高度平衡的(height balanced)二叉搜索树:对每一个结点x,x的左子树与右子树的高度差(平衡因子)至多为1。 有人也许要问:为什么要有AVL树呢?它有什么作用呢? 我们先来看看二叉搜索树吧(因为AVL树本质上是一棵二叉搜索树),假设有这么一种极端的情况: 阅读全文

posted @ 2016-05-20 19:32 SteveWang 阅读(3942) 评论(0) 推荐(0) 编辑

摘要:并查集 并查集(Union-Find Sets)是一种非常精巧而实用的集合,集合中的每个元素仍是一个集合,即它是集合的集合。在并查集中的元素(集合)内部进行查找操作以及并查集中的元素(集合)之间的合并操作的时间复杂度均可视为O(1),它主要用于处理一些不相交集合的合并问题,在合并之前,需要先判断两个 阅读全文

posted @ 2016-05-18 20:08 SteveWang 阅读(605) 评论(0) 推荐(0) 编辑

摘要:约瑟夫问题的提法:n个人围成一个圆圈,首先第1个人从1开始,一个人一个人的顺时针报数,报到第m个人,令其出列;然后再从下一个人开始,从1顺时针报数,报到第m个人,再令其出列,…,如此下去,直到圆圈中只剩一个人为止,此人即为优胜者。 例如 n = 8 m = 3 该问题老师让我们在带头节点的单循环链表 阅读全文

posted @ 2016-05-18 09:36 SteveWang 阅读(1104) 评论(0) 推荐(0) 编辑

摘要:题目来源:PTA02-线性结构3 Pop Sequence (25分) Question:Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and pop ra 阅读全文

posted @ 2015-10-12 15:20 SteveWang 阅读(959) 评论(0) 推荐(0) 编辑

摘要:题目来源:PTA02-线性结构2 Reversing Linked List (25分) Question:Given a constant K and a singly linked list L, you are supposed to reverse the links of every K 阅读全文

posted @ 2015-10-11 21:02 SteveWang 阅读(661) 评论(0) 推荐(0) 编辑

摘要:题目来源:PTA02-线性结构1 一元多项式的乘法与加法运算 (20分) 题目:设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分 阅读全文

posted @ 2015-10-11 15:33 SteveWang 阅读(2605) 评论(0) 推荐(0) 编辑

摘要:题目:如何用两个栈模拟实现一个队列? 如果这两个堆栈的容量分别是m和n(m>n),你的方法能保证队列的最大容量是多少?(这里讨论的是顺序栈,如果是链式栈的话完全没有必要考虑空间) 分析:栈的特点是“后进先出(LIFO)”,而队列的特点是“先进先出(FIFO)”。用两个栈模拟实现一个队列的基本思路是: 阅读全文

posted @ 2015-10-09 21:16 SteveWang 阅读(7924) 评论(4) 推荐(6) 编辑

摘要:题目:已知一个带有附加头节点的单链表,节点结构为(data,link)。假设该链表只给出了头指针first。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第i个位置上的节点,若查找成功,算法返回该节点的地址;否则返回NULL。 分析:用一个指针p指向链表的首节点,另一个指针q找到链 阅读全文

posted @ 2015-10-09 19:33 SteveWang 阅读(1153) 评论(0) 推荐(0) 编辑

摘要:题目:给定一个带附加头节点的单链表,设first为其头指针,节点的结构为(data,link),data为数据域,link为指针域,试写出算法:通过遍历一趟链表,将链表中所有节点逆序连接 分析:这是很经典的“单链表逆序”问题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能开辟额外的节点空间 阅读全文

posted @ 2015-10-08 12:39 SteveWang 阅读(11638) 评论(0) 推荐(2) 编辑