2013年8月21日
摘要: //该题原本想用递归实现,但却用循环实现了。。。//关键用了个队列#include void Print(BinaryTreeNode* pRoot, std::queue& Qbt){ if(pRoot != NULL) { coutm_nValue; if(pRoot->pLeft) Qbt.push(pRoot->pLeft); if(pRoot->pRight) Qbt.push(pRoot->pRight); }}int main(){ std::queue Qbt; ... 阅读全文
posted @ 2013-08-21 12:10 -赶鸭子上架- 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 关键在于思路, 需要两个输入向量,而函数中需要一个辅助栈! 思路:以待判出栈序列为基础,逐个判断它与栈顶元素是否相等,相等则弹出且j++,这表明此元素可为出栈顺序元素,不相等则栈元素不断入栈,直至相等,否则则判为非出栈序列!#includebool IsStackSquence(int* array1, int length1, int* array2, int length2){ bool IsOutStack = true; if(array1 == NULL || length1 st; int i = 0; int j = 0; s... 阅读全文
posted @ 2013-08-21 00:00 -赶鸭子上架- 阅读(220) 评论(0) 推荐(0) 编辑
  2013年8月14日
摘要: 转:一、预备知识―程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ― 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)―,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、文字常量区 ―常量... 阅读全文
posted @ 2013-08-14 22:13 -赶鸭子上架- 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 题目:设计包含min函数的栈,pop(),push(),min()的时间复杂度均为O(1)自己所写代码如下:(写‘栈’的代码还是有些不熟练!)#include using namespace std;const int MAX = 100;class Stack{private: int values[MAX]; int topindex; int minvalue; int minSecvalue;public: Stack(); virtual ~Stack(); int top() const; void push(int n); v... 阅读全文
posted @ 2013-08-14 15:28 -赶鸭子上架- 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题目:设计包含min函数的栈,pop(),push(),min()的时间复杂度均为O(1)自己所写代码如下:(写‘栈’的代码还是有些不熟练!)#include using namespace std;const int MAX = 100;class Stack{private: int values[MAX]; int topindex; int minvalue; int minSecvalue;public: Stack(); virtual ~Stack(); int top() const; void push(int n); v... 阅读全文
posted @ 2013-08-14 00:01 -赶鸭子上架- 阅读(135) 评论(0) 推荐(0) 编辑
  2013年8月13日
摘要: 题目:从外向里顺时针打印矩阵做题心得:该题本质上并未考查复杂的数据结构及算法,而是考查了快速找规律的能力!!! 要想作出此题,必须先有绝对清晰的思路,否则越写越乱(因为涉及到很多的循环打印)自己当时的思路基本符合作者提供的思路: 先考虑怎么打印一圈(四个循环),再考虑如何结束打印(和作者的意图不太一样,自己想通过打印数 start * 2 && rows > start * 2) { PrintMatrixInCircle(numbers, columns, rows, start); ++start; }}void PrintMatri... 阅读全文
posted @ 2013-08-13 22:02 -赶鸭子上架- 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 题目:求二叉树镜像根据作者思路,自己所写代码如下:void BinaryTreeMirror(BinaryTreeNode* pRoot){ if(pRoot == NULL) return; if(pRoot->pLeft != NULL || pRoot->pRight != NULL) { BinaryTreeNode* ptemp = pRoot->pLeft; pRoot->pLeft = pRoot->pRight; pRoot->pRight = ptemp; //递归调用 Bi... 阅读全文
posted @ 2013-08-13 18:17 -赶鸭子上架- 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题目:合并两个排序的单向链表自己所写代码如下:ListNode* MergeSortedLists(ListNode* pHead1, ListNode* pHead2){ if(pHead1 == NULL || pHead2 == NULL) return NULL; return (pHead1->value value)? MergeTwoList(pHead1,pHead2):MergeTwoList(pHead2,pHead1);}ListNode* MergeTwoList(ListNode* pFirst,ListNode* pSecond){ ... 阅读全文
posted @ 2013-08-13 15:37 -赶鸭子上架- 阅读(185) 评论(0) 推荐(0) 编辑
  2013年8月12日
摘要: #include//思路:遍历链表过程中,将各个指针入栈,再出栈进行反转ListNode* ReverseList(ListNode* pHead){ if(pHead == NULL) return NULL; ListNode* pNode = pHead; stack pNodeStack; while(pNode != NULL) { pNodeStack.push(pNode); pNode = pNode->m_pNext; } pNode = pNodeStack.top(); Li... 阅读全文
posted @ 2013-08-12 14:37 -赶鸭子上架- 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 感受:清晰的思路是最重要的!!!题目:求链表中间节点ListNode* MidNodeInList(ListNode* pHead){ if(pHead == NULL) return NULL; ListNode* pNode1 = pHead; ListNode* pNode2 = pHead; unsigned int step = 1; while(pNode2->m_pNext != NULL) { pNode2 = pNode2->m_pNext; step++; if((step & 0x... 阅读全文
posted @ 2013-08-12 12:04 -赶鸭子上架- 阅读(152) 评论(0) 推荐(0) 编辑