ldjhust

工欲善其事 必先利其器

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 7 8 9 10 11 12 13 下一页

2013年4月30日

摘要: 二叉树的数据结构如下:1 struct BinaryTreeNode2 {3 int nData;4 5 BinaryTreeNode *pLeft;6 BinaryTreeNode *pRight;7 };想要获取二叉树的深度只需先分别取得其左右子树深度的最大值再加1即为这颗二叉树的深度,而求其左右子树的深度也可以这样做,因而可以很快写出递归代码: 1 int GetDeepth(BinaryTreeNode *root) 2 { 3 if (NULL == root) 4 { 5 // 空二叉树深度为0 6 retur... 阅读全文
posted @ 2013-04-30 10:00 ldjhust 阅读(212) 评论(1) 推荐(0) 编辑

2013年4月29日

摘要: 二分搜索树的数据结构为:1 struct BinaryTreeNode2 {3 int nValue;4 5 BinaryTreeNode *pLeft;6 BinaryTreeNode *pRight;7 };首先我们来通过一个简单的例子来获取直接的感官,将这颗排序二叉树转变为排序的双向链表应为:可以很清楚的发现转换完成的双向链表的顺序其实就是二叉搜索树的中序遍历的顺序,因此这个题我们可以借助中序遍历来完成。因为二叉树的结构很符合递归的思想,因此基本上所有关于二叉树的问题都可以用递归来完成,这个问题也不例外。我们假设中序遍历到达根节点10时,它的左子树已经转换成了排序... 阅读全文
posted @ 2013-04-29 22:03 ldjhust 阅读(214) 评论(0) 推荐(0) 编辑

2013年4月27日

摘要: 将引用参数设置为常量数据的引用有三个好处:使用const可以避免无意中修改数据的编程错误使用const使函数能够处理const和非const实参,否则将只能接受非const数据使用const引用使函数能够正确声称并使用临时变量因此,因尽可能将引用形参声明为const。 阅读全文
posted @ 2013-04-27 23:08 ldjhust 阅读(205) 评论(0) 推荐(0) 编辑

2013年4月24日

摘要: 一个链表,节点里面的内容是字符串,如a->b->c->d->e,要求返回链表如下abcde->bcde->cde->de->e数据结构:1 struct NODE2 {3 char str[50];4 5 NODE *next;6 };首先直观的考虑可以用一个两层循环,时间复杂度O(n^2),当然这个效率是不被接受的 1 NODE *Linked(NODE *head) 2 { 3 assert (head != NULL); 4 5 for (NODE *p1 = head->next; p1 != NULL; p1 = p1->n 阅读全文
posted @ 2013-04-24 22:47 ldjhust 阅读(154) 评论(0) 推荐(0) 编辑

摘要: 单向链表的反转分两种情况,一种是带头结点的单向链表的反转,另一种是不带头结点的单向链表的反转一、不带头结点的单向链表的反转 不带头结点的单向链表反转需要三个指针,一个指针存储当前节点,一个存储当前节点的前一个节点,最后一个指针存储当前节点的下一个指针,每次反转当前节点的指针指向,一次往后遍历链表。 1 NODE *ReverseWithouHead(NODE *&head) 2 { 3 assert (head != NULL); 4 5 // 不带头结点的单向链表的反转 6 7 if (NULL == (head->next)) 8 { 9 ... 阅读全文
posted @ 2013-04-24 16:15 ldjhust 阅读(308) 评论(0) 推荐(0) 编辑

2013年4月21日

摘要: strcpy函数的原型是char *strcpy(char *strDest, const char *strSrc);不调用任何库函数实现strcpy的功能 1 // realize strcpy function without any library functions 2 #include <stdio.h> 3 #include <assert.h> 4 5 char *strcpy1(char *strDest, const char *strSrc) 6 { 7 assert (strDest != NULL); 8 9 assert (strSrc != 阅读全文
posted @ 2013-04-21 10:05 ldjhust 阅读(963) 评论(0) 推荐(0) 编辑

2013年4月20日

摘要: 参数入栈顺序是从右往左依次压入栈,因此在输出的时候需要谨慎处理 阅读全文
posted @ 2013-04-20 22:18 ldjhust 阅读(246) 评论(3) 推荐(0) 编辑

摘要: const int count = 3;…int *p = (int*)&count;*p = 5;cout << count << “ ” << *p << endl;…程序并不会报出编译错误,而且会打印出3 5,原因是count在预编译期间就会被替换成3,至于为什么可以修改常量的值,那是因为const *被强制转换成为了int *。 阅读全文
posted @ 2013-04-20 21:34 ldjhust 阅读(107) 评论(0) 推荐(0) 编辑

2013年4月11日

摘要: 1 #include <stdio.h> 2 #include <assert.h> 3 #include <malloc.h> 4 5 typedef struct NODE 6 { 7 int data; 8 9 struct NODE *next; 10 }Linklist; 11 12 void Reverse(Linklist *head) 13 { 14 assert (NULL != head); 15 16 Linklist *p1 = NULL; 17 Linklist *p2 = NULL; 18 19 ... 阅读全文
posted @ 2013-04-11 10:19 ldjhust 阅读(245) 评论(0) 推荐(0) 编辑

2013年4月9日

摘要: 计算一个整数的二进制表示中1的个数: 1 #include "stdafx.h" 2 3 int NumberOfOne(int a) 4 { 5 int nCount = 0; 6 7 while (0 != a) 8 { 9 ++nCount;10 11 a &= a - 1;12 }13 14 return (nCount);15 }16 17 int NumberOfOne1(int a)18 {19 int nCount = 0;20 21 for (int i = 0; i < 32; ++... 阅读全文
posted @ 2013-04-09 14:34 ldjhust 阅读(163) 评论(0) 推荐(0) 编辑

上一页 1 ··· 7 8 9 10 11 12 13 下一页