2013年7月20日
摘要: 参考http://www.cppblog.com/zengwei0771/archive/2012/04/28/173014.html和http://blog.csdn.net/shiren_bod/article/details/6703467代码:#includeusing namespace std;long add_func(int n,long& sum){ (n>0) && (add_func(n-1,sum)); return (sum+=n);}int main(void){ int n=100; long sum=0; cout<<& 阅读全文
posted @ 2013-07-20 20:55 紫金树下 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 题目: 输入1个英文句子,反转句子中单词的顺序,单词内字符的顺序不变,句子中单词以空格符隔开,标点符号和普通字母一样处理解: 这是字符串的逆转,除了用递归,这里用遍历,然后将节点插入到头节点位置。代码:#include#include#includeusing namespace std;//可以用链表实现的typedef struct node{ string data; struct node* next;}LinkNode;void revers(string line){ string word; istringstream stream(line); ... 阅读全文
posted @ 2013-07-20 20:36 紫金树下 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 题目: 输入整数序列,判断该数组是不是某个二叉查找树的后续遍历结果,是返回true,不是返回false.解: 二叉查找树中有左孩子8的元素为止,前面的元素都属于左孩子,后面的元素除了末尾都属于右孩子,因为这是我们已经判断左孩子的节点都8,那么继续判断左孩子和右孩子是不是二叉查找树的后续遍历,当且仅当左右孩子都是时,那么这个数组序列就返回true,否则返回false代码:#includeusing namespace std;//判断a[begin]->a[end]是不是bool isbt(int* a,int begin,int end){ //单节点是的 if(begin>=en 阅读全文
posted @ 2013-07-20 20:11 紫金树下 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 转载http://hi.baidu.com/janqii/item/824ffa4e668a5de01f19bc401。首先链表无环的情况下判断是不是相交,编程之美给了好几种方法,最简单的就是无过2个无环链表相交,那么他们的尾节点相同2。判断链表是不是有环3。如果链表有环怎么求环的入口点4。如果2链表无环,怎么求2个链表相交的第一个节点列。 这个我觉得编程之美上用hash表的方法就不错,首先对链表L1遍历,对每个节点地址做hash存自hash表中,然后对链表L2遍历,遇到第一个在hash表中出现的节点就是它们相交的第一个节点。时间是O(length1+length2),空间是O(length1 阅读全文
posted @ 2013-07-20 19:35 紫金树下 阅读(214) 评论(0) 推荐(0) 编辑