摘要: 编译器对递归调用是有限制的,因为每递归一次都需要把函数内的变量压栈,如果栈空间不够,就会死机。 阅读全文
posted @ 2015-04-16 22:34 hy1hy 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 一、C、C++程序编译时内存分为5大存储区:堆区、栈区、静态区(全局区)、文字常量区(储存字符串常量)、程序代码区(存放二进制程序)(1)静态存储区域: 静态存储区域的内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static... 阅读全文
posted @ 2015-04-16 22:25 hy1hy 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 1.迭代器类型· Input iterators(输入) 提供对数据的只读访问。· Output iterators(输出) 提供对数据的只写访问。· Forward iterators(正向) 提供读写操作,并能向前推进迭代器。· Bidirectional iterators(全向) 提供读写操... 阅读全文
posted @ 2015-04-16 22:11 hy1hy 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的... 阅读全文
posted @ 2015-04-16 19:37 hy1hy 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。int quickSort(i... 阅读全文
posted @ 2015-04-16 19:11 hy1hy 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。void ... 阅读全文
posted @ 2015-04-16 18:44 hy1hy 阅读(116) 评论(0) 推荐(0) 编辑
摘要: void insertSort(){ int a[10]={10,2,3,5,8,9,7,1,55,6}; int nVal=0; for(int i=1; i=0&&nVal=low&&nVal=high+1&&nVal<a[j] ) { a[j+1]=a[j]; ... 阅读全文
posted @ 2015-04-16 18:32 hy1hy 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 后序遍历按照“左孩子-右孩子-根结点”的顺序进行访问。1.递归实现void postOrder(BinTree* root){ if(root!=NULL) { inOrder(root->lchild); inOrder(root->rchild); coutdata; }... 阅读全文
posted @ 2015-04-16 17:54 hy1hy 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 中序遍历按照“左孩子-根结点-右孩子”的顺序进行访问。1.递归实现void inOrder(BinTree* root){ if(root!=NULL) { inOrder(root->lchild); coutdata; inOrder(root->rchild); }}2... 阅读全文
posted @ 2015-04-16 17:45 hy1hy 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 前序遍历按照“根结点-左孩子-右孩子”的顺序进行访问。1.递归实现void preOrder(BinTree* root){ if(root!=NULL) { coutdata; preOrder(root->lchild); preOrder(root->rchild); ... 阅读全文
posted @ 2015-04-16 17:39 hy1hy 阅读(214) 评论(0) 推荐(0) 编辑
摘要: templateclass QStack{public: QStack(){} ~QStack(){} void push(T const &); T pop();private: Queue Q1,Q2;};templatevoid QStack::push(T const &e){ //入... 阅读全文
posted @ 2015-04-16 17:08 hy1hy 阅读(130) 评论(0) 推荐(0) 编辑
摘要: templatestruct MyQueue{ void push(T &t) { s1.push(t); } T front() { if(s2.empty()) { if(s1.size() == 0) throw; while(!s1.empty... 阅读全文
posted @ 2015-04-16 16:39 hy1hy 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 1.已知n个人(n>=1)围坐一圆桌周围,从1开始顺序编号。从序号为1的人开始报数,顺时针数到m的那个人出列。他的下一个人又从1开始报数,数到m的那个人又出列。依此规则重复下去,直到所有人全部出列。请问最后一个出列的人的编号。Node* RemoveList(Node* head, int len)... 阅读全文
posted @ 2015-04-16 16:15 hy1hy 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 1.代码实现如下node* bubble(node* head, int len){ int nVal = 0; node* pCur=NULL; node* pNext=NULL; //外部循环为len for(int i=0; inext; //内部循环逐次减少 for... 阅读全文
posted @ 2015-04-16 03:03 hy1hy 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 解决方案:设立两个指针,一个单步走,一个两步走,当大步指针到达链表尾部的时候,小步指针也正好位于链表中间位置。 阅读全文
posted @ 2015-04-16 02:34 hy1hy 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 解决方案:初始两个节点指针Node* p1;Node* p2;p1先遍历K个节点;然后p1和p2同时开始遍历;当p1为NULL时,p2指向的节点即为倒数第K个节点。 阅读全文
posted @ 2015-04-16 02:32 hy1hy 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 解决方案:把p所指节点的下一个节点的值赋值给p所指的节点,因此就就可以通过删除p指向的下一个节点。 阅读全文
posted @ 2015-04-16 02:26 hy1hy 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 1.两个链表都带有头结点Node* Merge(Node* head1, Node* head2){ if(head1==NULL || head1->next==NULL) return head2; if(head2==NULL || head2->next==NULL) ret... 阅读全文
posted @ 2015-04-16 02:17 hy1hy 阅读(205) 评论(0) 推荐(0) 编辑