nullptr是为了解决原来C++中NULL的二义性问题而引进的一种新的类型,因为NULL实际上代表的是0。
观察如下代码
在C++98中,NULL可以代表0,这样对于如上两个函数来说,就会造成二义性了。那么为了解决这种二义性,在C++11中就引入了一个新的关键字nullptr来代表空指针,并且nullptr本身不能代表零。...
分类:
编程语言 时间:
2015-02-16 13:03:41
阅读次数:
215
带哨兵的双向链表,代码中我使用了nullptr,所以需要编译器升级,我的编译器是gcc/g++ 4.7.0这是可以的,编译的时候加参数—std=c++0x 节点中还可能有卫星元素 /* * IA_10.2LinkedLists.cpp * * Created on: Feb 12, 2015 * A...
分类:
编程语言 时间:
2015-02-12 12:03:55
阅读次数:
175
题意为将小于特定值x的所有节点均放在不小于x的节点的前面,而且,不能改变原来节点的前后位置。
思路:设置两个链表,一个用于存放值小于x的节点,一个用于存放值不小于x的节点。
class Solution {
public:
ListNode *partition(ListNode *head, int x) {
if(head==nullptr)
return head;
...
分类:
其他好文 时间:
2015-02-10 16:47:18
阅读次数:
137
递归实现,深度遍历,记录每一条路径。
class Solution {
public:
int sumNumbers(TreeNode *root) {
if(root==nullptr)
return 0;
vector> result;
vector path;
traverse(root,result,path);
int n=result.size();...
分类:
其他好文 时间:
2015-02-10 13:20:24
阅读次数:
141
题意为得出二叉树的最小深度,但深度是定义为从根节点到叶子节点的最少节点数。
容易出错的地方:为空节点时,直接返回0。这是不对的,要判断其是否有兄弟节点,没有兄弟节点的时候才能返回0,即这个节点的父节点是一个叶子节点。
错解1:
class Solution {
public:
int minDepth(TreeNode *root) {
if(root==nullptr)
...
分类:
其他好文 时间:
2015-02-09 12:58:55
阅读次数:
132
递归实现即可class Solution {
public:
bool hasPathSum(TreeNode *root, int sum) {
if(!root)
return false;
if(root->left ==nullptr&&root->right==nullptr&&root->val==sum)
return true;
return has...
分类:
其他好文 时间:
2015-02-08 21:54:43
阅读次数:
197
【1】关于0 与 NULL【2】关于nullptr和void*的称法nullptr习惯被称作指针空值void*习惯被称作无类型指针【3】nullptr 和 nullptr_tnullptr习惯被称作指针空值nullptr_t习惯被称作指针空值类型即表示指针空值类型并非仅有nullptr一个实例可以通...
分类:
编程语言 时间:
2015-01-31 00:05:18
阅读次数:
358
题目:EPI
书上的代码我认为有错。我的代码如下所示,时间复杂度为O(h),h为二叉树的高度。
//该函数不允许r和s为nullptr,且要求r、m、s三个指针互不相等
bool is_r_s_descendant_and_ancestor(shared_ptr r, shared_ptr m, shared_ptr s)
{
if (m == nullptr || r == nul...
分类:
其他好文 时间:
2015-01-18 14:27:37
阅读次数:
265
早在 1972 年,C语言诞生的初期,常数0带有常数及空指针的双重身分。 C 使用 preprocessor macroNULL表示空指针, 让NULL及0分别代表空指针及常数 0。NULL可被定义为((void*)0)或是0。C++ 并不采用 C 的规则,不允许将void*隐式转换为其他类型的指针...
分类:
其他好文 时间:
2014-12-22 17:52:47
阅读次数:
160