剑指Offer
文章平均质量分 50
snow_5288
三天不读书,智商输给猪
展开
-
【面试题一】:string类的深浅拷贝
#pragma once#include using namespace std;//浅拷贝(析构对象时会出错)class CMyString{public: //构造函数 CMyString(char* pData = "") :m_pData(new char[strlen(pData)+1]) { if (*pData) { strcpy(m_pData原创 2017-04-06 22:38:34 · 458 阅读 · 0 评论 -
二维数组中查找数据(该数组每行从左至右递增,每列从上至下递增)
/*二维数组中查找(该数组每行从左至右递增,每列从上至下递增)*/#pragma once#include using namespace std;const int ROW = 4;const int COL = 4;bool Find(int a[ROW][COL],int key){ if (a && COL>0 && ROW>0) { int col = COL-1原创 2017-04-12 19:12:45 · 931 阅读 · 0 评论 -
求两个节点的最近公共祖先多种解法&&判断一个节点是否在二叉树中
#pragma once#include <iostream>#include <cassert>#include <stack>#include <vector>using namespace std;template <typename T>struct TreeNode{ T _data; //节点的数据 TreeNode<T>* _l原创 2017-04-12 19:26:46 · 839 阅读 · 0 评论 -
大数运算(加减乘除)
大数运算的实现方法主要有以下几种: 1) 用字符串表示大数。将大数用十进制字符数组表示,然后按照“竖式计算”的思想进行计算。这种方法比较容易理解,但是计算效率比较低。 2) 将大数看成二进制流进行处理。使用各种位运算和逻辑操作来实现打算的运算。该方法设计复杂,可读性较差,而且难以调试。 3) 将大数表示成一个n进制数组。n的取值越大,数组的大小越小,这原创 2017-05-02 14:38:48 · 23559 阅读 · 3 评论 -
数据结构之用两个队列实现一个栈
一、了解栈和队列的基本结构1、栈定义:栈是一种只能在一端进行插入或删除操作的线性表。允许插入和删除的一端被称为栈顶(动态变化),另一端被称为栈底(固定不变),栈的插入和删除被分别称作入栈和出栈。特点:先进后出(FILO)。存储结构:顺序栈和链式栈。2、队列定义:队列为一种只允许在表的一端进行插入,在一端进行删除的受限制的线性表。允许插入的一端叫做队尾,允许删原创 2017-04-10 11:33:06 · 1143 阅读 · 0 评论 -
C语言模拟实现C++的继承与多态
一、面向过程编程与面向对象编程的区别 众所周知,C语言是一种典型的面向过程编程语言,而C++确实在它的基础上改进的一款面向对象编程语言,那么,面向过程与面向对象到底有什么样的区别呢?【从设计方法角度看】 面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来。 面向对象程序设计方法是将数据和对象的操作封装在一起,作为一个整体来处理。【从维护角原创 2017-04-16 21:28:27 · 4618 阅读 · 0 评论 -
栈和队列的常见面试题
1、两个队列实现一个栈 两个队列实现一个栈2、两个栈实现一个队列 【算法思想】 1>设计类 成员变量:给两个栈s1和s2来模拟实现一个队列 成员函数:入队Push()和出队Pop() 2>给两个指向栈对象s1、s2的指针input和output,分别用来入队和出队 3>按照先进先出的方式模拟入队和出队操作 Push:将input指向不空的栈,然后在input中入队 Pop:将inp原创 2017-05-04 14:06:43 · 3836 阅读 · 0 评论 -
二叉树的经典面试题总结
1、二叉树的构造 2、遍历二叉树 3、求二叉树的高度(深度) 4、求二叉树中节点的个数 5、求二叉树中叶子节点的个数 6、求二叉树第K层的节点个数7、判断一个节点是否在二叉树中 8、求两个节点的最近公共祖先9、判断一棵二叉树是否是平衡二叉树10、求二叉树中最远的两个节点的距离 11、由前序遍历和中序遍历重建二叉树12、判断一棵树是否是完全二叉树13、求二叉树的镜像14、二叉搜索树->有序双链表原创 2017-05-04 16:20:45 · 9134 阅读 · 1 评论