上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 57 下一页
摘要: 问题: 多关键字排序是否比单关键字排序更复杂? 对于多关键字排序,只需要在比较操作时同时考虑多个关键字即可。 和单关键字排序本质相同,并不会复杂。 多关键字比较示例程序: 结果输出1。 这意味着我们的多关键字比较就定义好了。 Sort的构造函数、拷贝构造函数、赋值操作符全部为私有的,也就是我们不能创 阅读全文
posted @ 2018-09-20 21:43 周伯通789 阅读(206) 评论(0) 推荐(0)
摘要: g函数返回后,f函数对应的栈中的数据没有任何变化,这就是回溯算法的核心。 可以这样思考,先逆序打印从第二个节点开始的子表,最后再将第一个节点打印出来。 逆序打印栈的增长与退栈示意图: 退栈打印的过程就是回溯的过程。 递归调用的时候只是先将参数保存在栈上,这时这个参数还没有用到,只是让指针指向了相应的 阅读全文
posted @ 2018-09-19 23:41 周伯通789 阅读(243) 评论(0) 推荐(0)
摘要: 将大问题分解,先将第一个节点拿出来,将其它的节点看成一个整体。 实验2: e始终指向字符串的开头,用来打印,s用来控制交换。 一开始,a和a交换,全排列b、c。 然后,a和b交换,全排列a、c。 然后交换a和c,全排列b、a。 如果两个字符是一样的,就没有必要交换,否则全排列有重复的现象。 阅读全文
posted @ 2018-09-19 22:42 周伯通789 阅读(245) 评论(0) 推荐(0)
摘要: 代码改进: 小结: 阅读全文
posted @ 2018-09-19 21:50 周伯通789 阅读(165) 评论(0) 推荐(0)
摘要: 思考: replace图解: 程序完善: DTString.h: DTString.cpp: 小结: 阅读全文
posted @ 2018-09-19 00:04 周伯通789 阅读(485) 评论(0) 推荐(0)
摘要: 问题: 右移的位数和目标串没有多大的关系,和子串有关系。 已匹配的字符数现在已经有了,部分匹配值还没有。 前六位匹配成功就去查找PMT中的第六位。 现在的任务就是求得部分匹配表。 问题:怎么得到部分匹配表呢? 前缀集合和后缀集合取最长的交集就是部分匹配值。 例如,上图中前缀和后缀没有交集,部分匹配值 阅读全文
posted @ 2018-09-18 22:14 周伯通789 阅读(374) 评论(1) 推荐(0)
摘要: 插入: 去掉字符串两端的空白: DTString.h更新如下: DTString.cpp更新如下: 测试程序如下: 运行结果如下: 阅读全文
posted @ 2018-09-17 23:33 周伯通789 阅读(215) 评论(0) 推荐(0)
摘要: c++中用STL封装了字符串类,但是这是不通用的。 实现字符串类,就是用面向对象的方式封装C语言对字符串的操作。 添加DTString.h文件: 添加DTString.cpp文件: 测试程序如下: 运行结果如下: 小结: 阅读全文
posted @ 2018-09-17 21:56 周伯通789 阅读(217) 评论(0) 推荐(0)
摘要: 问题: 进栈到出栈的数据元素的转移在出栈(stack_out)为空的时候发生。 用栈实现队列: 结果如下: 用队列实现栈: 进栈时直接进,出栈时,先将前n-1个元素转移到另一个队列,然后剩下的那一个元素出去即可。 两个队列来回倒换。 程序如下: 结果如下: 小结: 阅读全文
posted @ 2018-09-16 22:21 周伯通789 阅读(221) 评论(0) 推荐(0)
摘要: 添加LinkQueue.h文件: 测试程序如下: 结果如下: 用LinkList实现链式队列时,插入操作的时间复杂度为O(n),这是很低效的。 修改LinkQueue.h: 如队列的操作的时间复杂度变成了O(1)。 测试程序如下: 结果如下: 测试程序2: 结果如下: 这体现了顺序队列的缺陷。而链式 阅读全文
posted @ 2018-09-16 21:34 周伯通789 阅读(258) 评论(0) 推荐(0)
上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 57 下一页