随笔分类 -  数据结构

摘要:核心算法: 具体过程—— 第一步:格式化中缀表达式 这一步的目的是为了解决“-”的歧义问题:有时候“-”是一元运算符,有时候“-”是二元运算符。可以用一种巧妙的方案解决歧义——在一元运算符的“-”前面添上0。这样,此后就可以把+-*/统一当做二元运算符处理。 具体代码:(放在FormatMid.h文 阅读全文
posted @ 2016-10-24 22:25 lvmememe 阅读(1542) 评论(0) 推荐(0)
摘要:归并排序还是用到了递归(原来难理解的东西是因为递归),所以先不说递归就不会觉得难了。(额、、可惜已经说了,好吧,先当我没说= =) 那么先讨论一个问题:怎么把两个有序的数组合并成一个新的有序数组?答:这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行... 阅读全文
posted @ 2015-08-29 17:19 lvmememe 阅读(650) 评论(0) 推荐(0)
摘要:这是一个很典型的递归题目,有助于理解递归思想。规则如下:我们不妨自定义一个函数,用来移动盘void hannuo(int n,char a,char b,char c) 含义:a上的n个盘子要通过b的中转移动到c上好,那么这个函数怎么实现打印路径的功能呢? 如果n==1那么直接把盘子从a移动到c上就... 阅读全文
posted @ 2015-08-24 13:15 lvmememe 阅读(333) 评论(0) 推荐(0)
摘要:这是图论中的一个问题,基本概念可以参照百度百科 http://baike.baidu.com/link?url=UT6VdWmNgZ6ZGJQwlTg3MuzUHBMlMIyYbQgfSDwY7V4kBoklD2oj-oReNVxXIr1OAlMxVLEls4wk82kRrN7dCq 最小生成树就是 阅读全文
posted @ 2015-08-22 21:36 lvmememe 阅读(270) 评论(1) 推荐(0)
摘要:堆排序用到的是完全二叉树的性质,所以在看这篇文章之前先学习完全二叉树。http://baike.baidu.com/link?url=HUZLyRNtNhAUzf7rgffW3IHkPbNQF_0vO63EvTKZBgYztrMz02B2_-PlCV5eFg6J8y8w8sHEu4Bd7bZVOXo... 阅读全文
posted @ 2015-08-22 14:05 lvmememe 阅读(334) 评论(2) 推荐(0)
摘要:二叉排序树与快排的思想差不多,只不过这里用到了二叉树的数据结构。对于这个二叉树满足,每个节点都满足左子树每个值都比它小,右子树每个值都比它大。这样,中序遍历这个树就可以得到升序结果。 这里可以看出,关键问题是,怎么把一个结点插入到他应该在的位置,实现二叉排序树的构建过程。用到的是一个递归操作。代码... 阅读全文
posted @ 2015-08-22 13:45 lvmememe 阅读(272) 评论(0) 推荐(0)
摘要:其实如果理解了快排的原理,双关键字快排其实是很简单的。因为快排的思想是在待排序序列中选取一个记录,让它左边的都小于等于它,右边的都大于等于它,如此递归。那么双关键字的思想就顺其自然:在待排序序列中选取一个记录,让它左边的第一关键字小于它,或者第一关键字等于它但是第二关键字小于它;右边的第一关键字大于... 阅读全文
posted @ 2015-08-22 13:11 lvmememe 阅读(1461) 评论(0) 推荐(0)
摘要:C语言使用快排的方式有两种,1、直接用库函数stdlib.h里的qsort函数 2、自己编写快排代码(第一种方便,第二种较为自由)qsort 的函数原型是:void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const ... 阅读全文
posted @ 2015-08-22 13:02 lvmememe 阅读(4969) 评论(0) 推荐(0)
摘要:输入中缀表达式输出结果(结果可以是小数,但输入必须是整数) 1 #include 2 #include //需要两个栈,一个储存结果,一个储存运算符 3 #define newpc (stype *)malloc(sizeof(stype)) 4 #define newpi (intt... 阅读全文
posted @ 2015-08-22 12:18 lvmememe 阅读(1471) 评论(0) 推荐(0)
摘要:这里要学的程序主要用来实现一个功能——输入表达式输出结果,也就是一个计算器。效果如下:这个程序主要有两个步骤:1、把中缀表达式转换为后缀表达式;2、计算后缀表达式的结果。首先先明白几个问题:1、为什么要转换为后缀表达式?因为后缀表达式容易实现计算机计算结果。(可以百度一下后缀表达式,又称逆波兰式)2... 阅读全文
posted @ 2015-08-22 12:15 lvmememe 阅读(6309) 评论(0) 推荐(1)