04 2019 档案

摘要:测试代码 这是《C++ primer》 的题,主要就是为了测试派生类拷贝控制操作的行为,实验结果与预期相同 1 派生类的默认构造函数会先运行基类的默认构造函数,将基类中的数据成员初始化,然后执行自己的默认构造函数,将数据成员初始化 2 派生类使用拷贝构造函数时会先运行基类的拷贝构造函数,然后再运行自 阅读全文
posted @ 2019-04-22 14:36 start-from-ling 阅读(166) 评论(0) 推荐(0)
摘要:是什么 对于一个中缀表达式,在将其转化为逆波兰表达式后,计算就会显得很简便,从左至右,在遇到数字的时候就将其入栈,在遇到运算符的时候就将栈中的数字弹出进行运算,然后将运算结果再入栈,循环此过程直到末尾 转换 逆波兰表达式是根据中缀表达式转换得到的,具体转换如图 1 先用括号显示的表示所有运算符的优先 阅读全文
posted @ 2019-04-20 18:00 start-from-ling 阅读(178) 评论(0) 推荐(0)
摘要:实现代码 c++ include "../head.h" include include class strBlob { public: typedef vector::size_type size_type; strBlob(); strBlob(initializer_list il); str 阅读全文
posted @ 2019-04-12 15:52 start-from-ling 阅读(462) 评论(0) 推荐(0)
摘要:栈混洗的概念 中的元素经 的中转后压入 中,其间,只允许从 弹出压入 或者从 弹出压入 ,`A B`中即完成一次栈混洗操作 栈混洗的甄别 对于这个问题主要就是模拟一次栈混洗来解决,即每次 之前检测 是否已空,或需要弹出的元素在 中却不是顶元素 代码实现 c++ include "../head.h" 阅读全文
posted @ 2019-04-11 14:40 start-from-ling 阅读(2663) 评论(1) 推荐(2)
摘要:栈的一个典型应用就是进制转换 c++ include "../head.h" include void convert(stack &s, int n, int base) { const static char digit[] = {'0','1', '2', '3', '4', '5', '6' 阅读全文
posted @ 2019-04-10 22:13 start-from-ling 阅读(176) 评论(0) 推荐(0)
摘要:插入排序 时间复杂度$\mathrm{O}(n^2)$ 算法的思路如图所示 将待排序部分分成两个片段,有序片段和待排序片段,每次从待排序片段取一个数,与有序片段进行比较后放入合适位置 代码实现 这里使用的方法是《大话数据结构》中的实现,将a[0]设置为哨兵,如果有逆序,先将元素放入哨兵,然后与有序片 阅读全文
posted @ 2019-04-09 15:00 start-from-ling 阅读(220) 评论(0) 推荐(0)
摘要:冒泡排序 时间复杂度$\mathrm{O}(n^2)$ 冒泡算法思路如图所示 两两比较相邻的两个元素,如果逆序就交换 算法改进一 当一趟排序没有发生任何交换操作时,则此段元素就是有序的,布尔类型的sorted就用来指示是否有序 算法改进二 经过几次排序后,可能有些片段会变得有序,用last表示从la 阅读全文
posted @ 2019-04-08 14:56 start-from-ling 阅读(149) 评论(0) 推荐(0)
摘要:选择排序 时间复杂度$\mathrm{O}(n^2)$ 每次都对无序片段进行整趟扫描,取得最大或最小的那个元素,放到有序片段的前方或后方 算法思路如图所示 与冒泡排序相比就是少了很多交换元素的操作,选择排序每次只进行一次元素交换 代码 c++ void selectSort(int a, size_ 阅读全文
posted @ 2019-04-08 14:14 start-from-ling 阅读(158) 评论(0) 推荐(0)
摘要:归并排序 时间复杂度$\mathrm{O}(nlogn)$ 排序的主要思想如图所示 先将待排序的内容拆分直到无法拆分为止,然后再将拆分的内容逐层排好顺序归并到一起 这里使用的归并思想如图所示 逐个比较两条有序片段的内容,取出小的哪一个 代码的主体结构如图所示 B、C两个区域的内容相比较后放入A中 ~ 阅读全文
posted @ 2019-04-08 12:01 start-from-ling 阅读(114) 评论(0) 推荐(0)