随笔分类 -  算法与数据结构

摘要:第1章 字符串 1.1 字符串的旋转 输入一个英文句子,翻转句子中单词的顺序。要求单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如:若输入“I am a student.”,则输出“student. a am I”。 1.2 字符串的包含 给定一长字符串a和 阅读全文
posted @ 2017-03-27 19:06 紫洁 阅读(1004) 评论(0) 推荐(0)
摘要:1 定义 二叉排序树,又称为二叉查找树。它或者是一颗空树,或者是具有下列性质的二叉树。 (1)若它的左子树不为空,则左子树上所有结点的值都小于它的根结点的值; (2)若它的右子树不为空,则右子树上所有结点的值都大于它的根结点的值; (3)它的左、右子树也分别为二叉排序树。 2 二叉排序树查找操作 阅读全文
posted @ 2016-07-28 20:16 紫洁 阅读(470) 评论(0) 推荐(0)
摘要:1 概念 查找表(Search Table)是由同一类型的数据元素(或记录)构成的集合。 查找就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 查找表按照操作方式可以分为两大种:静态查找表和动态查找表。 (1)静态查找表:只做查找操作的查找表。 (2)动态查找表:在查 阅读全文
posted @ 2016-07-28 19:22 紫洁 阅读(339) 评论(0) 推荐(0)
摘要:1 线索二叉树原理 对于一个有n个结点的二叉链表,每个结点有指向左孩子和右孩子的两个指针域,故共有2n个指针域。而n个结点共有(n-1)条分支线条,也就是说共有 2n-(n-1)=n+1个空指针域。 对上图做中序遍历得到了HDIBJEAFCG这样的字符序列。遍历过后,我们可以知道,结点I的前驱是结点 阅读全文
posted @ 2016-07-18 19:12 紫洁 阅读(2899) 评论(0) 推荐(0)
摘要:1 设计包含min 函数的栈。 定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。 要求函数min、push 以及pop 的时间复杂度都是O(1)。 2 颠倒栈。 题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1 在栈顶。 颠倒之后的栈为{5, 4, 3, 2, 阅读全文
posted @ 2016-07-15 12:06 紫洁 阅读(342) 评论(0) 推荐(0)
摘要:1 二叉树的链式存储结构 结构示意图如下: 2 二叉树的遍历方法 (1)前序遍历:先访问根结,然后前序遍历左子树,再前序遍历右子树。下面这颗二叉树的前序遍历结果为ABDHKECFIGJ (2)中序遍历:先中序遍历左子树,然后访问根结点,最后再中序遍历右子树。上面这颗二叉树的中序遍历结果为HKDBEA 阅读全文
posted @ 2016-07-12 20:01 紫洁 阅读(4381) 评论(0) 推荐(0)
摘要:1 定义 二叉树(Binary Tree)是n(n >= 0)个结点的有限集合,该集合或者是空集(称为空二叉树),或者由一个根结点和两颗互不相交的、分别称为根结点的左子树和右子树组成。 2 二叉树的特点 (1)每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。 (2)左子树和右子树是有顺序的 阅读全文
posted @ 2016-07-12 19:21 紫洁 阅读(646) 评论(0) 推荐(0)
摘要:分析: 初始化三个指针p1,p2,p3. p1指向当前结点,p2指向当前结点的下一个结点,p3指向当前结点的上一个结点。则初始值p1,p2,p3分别是:p1指向第一个结点,p2指向第二个结点,p3指向p1的上一个结点,则p1的初始值为NULL。 逆序后p1->next = p3. 紧接着让p1,p2 阅读全文
posted @ 2016-07-12 18:31 紫洁 阅读(311) 评论(0) 推荐(0)
摘要:微软亚院之编程----判断两个链表是否相交 给出两个单向链表的头指针,比如h1,h2,判断这两个链表是否相交。 分析: (1)先判断链表有无环,如果一个有环,一个没有环,则说明两个链表肯定不会相交。 (2)如果两个链表都没有环,则如果两个链表相交,两个链表的最后一个结点肯定是同一个结点。 (3)如果 阅读全文
posted @ 2016-07-12 18:30 紫洁 阅读(942) 评论(0) 推荐(0)
摘要:1 思路 如果有两个类型相同的栈,我们为它们分别开辟了数组空间。极有可能是一个栈已经满了,再入栈就溢出了,而另一个栈却还有很多存储空间。这又何必呢?我们完全可以用一个数组来存储两个栈,只不过需要一些小的技巧。 我们的做法如下,数组有两个端点,两个栈有两个栈底。让一个栈的栈底为数组的始端,即数组下标为 阅读全文
posted @ 2016-07-09 10:20 紫洁 阅读(3159) 评论(0) 推荐(0)
摘要:1 链队列的存储结构 将对头指针front指向链队列的头结点,队尾指针rear指向终端结点。 空队列时,头指针front和尾指针rear都指向头结点。 链队列的存储结构为: 2 入队操作 3 出队操作 出队操作,就是头结点的后继结点出队,将头结点的后继改为它后面的结点。 若链表除头结点外只剩一个元素 阅读全文
posted @ 2016-07-09 09:45 紫洁 阅读(11608) 评论(1) 推荐(2)
摘要:1 定义 队列是只允许在一端进行插入操作,另一端进行删除操作的线性表。 队列是一种先进先出(FIST IN FIRST OUT)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为对头。 2 队列的顺序存储结构 (1)队列顺序存储的不足--引出循环队列 假设一个队列有n个元素,则顺序存 阅读全文
posted @ 2016-07-07 15:09 紫洁 阅读(10447) 评论(1) 推荐(1)
摘要:1 链式存储结构 栈的链式存储结构,简称链栈。 由于栈只是栈顶在做插入和删除操作,所以栈顶应该放在单链表的头部。另外,都有了栈顶在头部了,单链表中的头结点也就失去了意义,通常对于链栈来说,是不需要头结点的。 对于链栈来说,基本不存在栈满的情况,除非内存已经没有使用空间了。 对于空栈来说,链表原来的定 阅读全文
posted @ 2016-07-06 15:26 紫洁 阅读(7049) 评论(0) 推荐(0)
摘要:1 定义 栈是限定只能在表尾删除和插入操作的线性表。 允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。 栈的插入操作称为进栈,也称压栈、入栈。 栈的删除操作称为出栈,也称弹栈。 2 栈的抽象数据 阅读全文
posted @ 2016-07-06 14:54 紫洁 阅读(13212) 评论(0) 推荐(1)
摘要:1 微软亚院之编程----判断两个链表是否相交 给出两个单向链表的头指针,比如h1,h2,判断这两个链表是否相交。 http://www.cnblogs.com/muzijie/p/5664518.html 2 反转单链表 http://www.cnblogs.com/muzijie/p/56645 阅读全文
posted @ 2016-06-27 21:22 紫洁 阅读(245) 评论(0) 推荐(0)
摘要:1 线性表的双向链表存储结构 2 既然单链表有循环链表,双向链表也有循环链表 双向循环链表带有头结点的空链表: 双向循环链表带有头结点的非空链表: 3 双向链表的插入操作,注意要修改两个指针变量。 假设要在p和p->next之间插入一个数据为e的元素s。 以上代码一定要注意顺序。 4 双向链表的删除 阅读全文
posted @ 2016-06-27 21:09 紫洁 阅读(530) 评论(0) 推荐(0)
摘要:1 概念 将单链表中终端结点的指针端由空指针改为头结点,就使整个单链表形成一个环,这种头尾相接的单链表就称为单循环链表,简称循环链表。 循环链表的好处是:从任何结点出发,都可以访问到链表的所有结点。 为了使空链表和非空链表处理一致,我们通常设一个头结点。注意,并不说循环链表一定要有头结点。 循环链表 阅读全文
posted @ 2016-06-27 20:48 紫洁 阅读(1331) 评论(0) 推荐(0)
摘要:1 概念 想法: 用数组来代替指针,来描述单链表 做法: 首先数组的元素都是由两个数据域(data和cur)组成,data存放数据元素,而游标cur相等于指针,存放该元素的后继在数组中的下标。 把这种用数组描述的链表叫做静态链表。 2 静态链表的存储结构 为了方便插入数据,通常会把数组创建的很大。 阅读全文
posted @ 2016-06-27 16:26 紫洁 阅读(1032) 评论(0) 推荐(0)
摘要:1 n个结点链结成一个链表,即为线性表的链式存储结构,由于每一个结点只包含一个指针域,因此称为单链表。 链表中第一个结点的存储位置成为头指针,那么整个链表的存取就必须是从头指针开始了。 有时候会在单链表的第一个结点前附设一个结点,称为头结点。 头指针与头结点的区别: 头指针: (1)头指针是指链表指 阅读全文
posted @ 2016-06-25 22:32 紫洁 阅读(1764) 评论(0) 推荐(0)
摘要:1 线性表的顺序存储结构,是指用一段地址连续的存储单元依次存储线性表的数据元素。既然线性表的每个数据元素类型都相同,所以可以用一维数组来实现顺序存储结构,即把第一个元素存储在下标为0的位置上,接着把线性表相邻的元素存储在数组中相邻的位置。2 线性表顺序存储的结构代码 #define MAXSIZE 阅读全文
posted @ 2016-06-25 22:31 紫洁 阅读(4995) 评论(0) 推荐(0)