###问题:翻转单词顺序 翻转单词顺序,但单词中字母顺序保持不变 void reverseword(char* begin, char* end) { if (begin != NULL && end != NULL) { while (begin < end) { char temp = *begin; *begin = *end; *end = temp; begin++; end--; } } else return ; } char* reversesentence(char* begin) { if (begin == NULL) return NULL;...
###问题:链表的公共节点 输入两个链表,找出他们的第一个公共节点。 ilistnode* findcommon(ilistnode* list1, ilistnode* list2) { ilistnode* templist1 = list1; ilistnode* templist2 = list2; if (list1 == NULL || list2 == NULL) return NULL; int length1 = 0; for (; list1 != NULL; list1 = list1->getnext()) { length1++; } int length2 = 0; for (; list2 != NULL;...
###问题:丑数 我们把只包含因子2,3,5的数成为丑数,求按从小到大顺序的第1500个丑数 丑数如:1,2,3,4,5,6,8 int min(int num1, int num2, int num3) { int min = (num1 < num2) ? num1 : num2; min = (min < num3) ? min : num3; return min; } int calculateuglynumber(int index) { int *uglylist = new int[index]; uglylist[0] = 1; int uglyindex = 1; int...
###问题:二叉树镜像 输入二叉树,求二叉树的镜像。 void reversetree(TreeNode* tree) { if (tree == NULL) return; TreeNode* treeleft = tree->getleft(); TreeNode* treeright = tree->getright(); if (treeleft != NULL) { tree->setright(treeleft); reversetree(treeleft); } if (treeright != NULL) { tree->setleft(treeright); reversetree(treeright); } }
###问题:判断子树 给定两颗二叉树A,B,判断A是否是B的子结构。 bool issubtree(TreeNode* bigtree, TreeNode* smalltree) { if (smalltree == NULL) return true; if (bigtree == NULL) return false; if (bigtree->getvalue() == smalltree->getvalue()) return issubtree(bigtree->getleft(), smalltree->getleft()) && issubtree(bigtree->getright(), smalltree->getright()); else return false; } bool findsubtree(TreeNode* bigtree,TreeNode* smalltree) { if (bigtree == NULL || smalltree == NULL) return false; bool...
###问题:链表合并 合并两个已排序的链表 input: 1->3->5; 2->4->6 output: 1->2->3->4->5->6 class ilistnode { public: ilistnode(int value, ilistnode* next = NULL) :Value(value), Next(next) { } int getvalue() const { return Value; } ilistnode* getnext() const { return Next; } void setvalue(int value) { Value = value; } void setnext(ilistnode* next) { Next = next;...
###问题:字符替换 实现一个函数,将字符串中的每个空格替换为”%20。 input:”we are happy” output:”we%20are%20happy” void replacespace(char* istring,int length) { if (istring == NULL || length < 0) return; int spacenumber = 0; for (int i = 0; i < length; i++) { if (*(istring + i) == ' ') spacenumber++; } int resultlength = length + spacenumber *...
###问题:整数输出 输入数字n,按顺序打印出从1最大的n位十进制数。 input:3 output: 1,2,3,…999
###问题:还原二叉树 (1)根据一个二叉树的前序遍历和中序遍历还原二叉树。 (2)根据一个二叉树的后序遍历和中序遍历还原二叉树。 #include<iostream> #include<list> using namespace std; typedef list<int>::iterator index; class TreeNode { public: TreeNode(int value, TreeNode* left = NULL, TreeNode * right = NULL) :ivalue(value), ileft(left), iright(right) { } int getvalue() { return ivalue; } TreeNode* getleft() { return ileft; } TreeNode* getright() { return iright; } void...
###问题:调整数组顺序使奇数位于偶数前面 (1)输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 (2)考虑设计一个模式解决同类问题。 void swap(int &a, int &b) { int c = a; a = b; b = c; } bool iseven(int integer) { return integer % 2; } void movearray(int iarray[], int start,int end,int length ,bool (*func)(int)) { if (start<0 || end>(length + start) || length < 0) return;...