2013年8月5日
摘要: 对于各种数据结构,比如set,map,二叉树等等,现在还处于很混乱的状态。。。想通过《剑指offer》以及自己的亲手编写各种数据结构的实现与操作来熟练掌握,还是跟着此书的节奏走。目标:在半个月内熟练!首先,单链表的添加元素和删除元素,如下://单链表的添加与删除元素操作//1、单链表中将元素添加至链表尾部(也可用于创建链表)//思路:1、定义节点;2、由前到后遍历后插入到尾部,改变尾指针;// 3、特殊情况:单链表为空,此时添加元素后会改动头指针,而非尾指针struct ListNode{ int m_Value; ListNode* m_pNext;}void AddT... 阅读全文
posted @ 2013-08-05 22:08 -赶鸭子上架- 阅读(638) 评论(0) 推荐(0) 编辑
  2013年8月3日
摘要: 转载于http://www.cnblogs.com/graphics/archive/2010/07/05/1771110.html http://hi.baidu.com/sdkinger/item/dcad78e374707ff12b09a453一、#include #include #include using namespace std ;int main(void) { map m ; m.insert(pair(1, "abc")) ; m.insert(pair(2, "def")) ; m.insert(pair(3, "def 阅读全文
posted @ 2013-08-03 20:24 -赶鸭子上架- 阅读(2362) 评论(0) 推荐(0) 编辑
  2013年7月25日
摘要: 转载于http://www.cnblogs.com/Logic0/archive/2010/04/22/1850372.htmlc与机器联系紧密,抽象程度不是太高,所以机器层面的地址也拿过来了,改名叫指针。遇到指针,要读成“地址变量”,其实指针就是一个存放整数(地址就是一个整数)的变量而已,多少级都是如此。一、定义一个指针 int * p; 与访问指针指向的变量 * p;这两个语句里面的 * ,是两个不同的符号,要区别对待,不要把他看成一样的东西。第一个*表示:要定义变量p是个存放地址的变量。第二个*表示:要寻址了,要找p里存放的地址指向的变量了。二、语句int *p;有三个意思:1. p是一 阅读全文
posted @ 2013-07-25 21:21 -赶鸭子上架- 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 题目:替换字符串中的空格为“%20”。说明:在浏览器的地址栏中输入某个网址,在解析过程中会看到类似“%20”的字样,这应该就是网络编程涉及的内容。。。 该题总体来说比较简单(连我都能想到!),个人认为考查的是思维的敏捷。1、先按照自己的思路编程如下://以下为开辟新的存储单元,并在新的存储上执行替换O(n)#include "stdafx.h"#include using namespace std;/*int main(int argc, char* argv[]){ char String[] = "We are happy."; char* str 阅读全文
posted @ 2013-07-25 19:00 -赶鸭子上架- 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 一、总体来说,1、对任意数组和指针:数组名可认为是指向数组中第一个元素的指针。虽然是地址,但不同于指针,数组名不是变量,而是常量地址,所以不能修改数组名!!!比如:int array0[5] = {0};int array1[5] = {0};array0 = array1; //试图对数组名array0赋值,这是绝对错误的!2、还有对数组名决不能进行++或--操作!!!(自己老是犯这样的低级错误!必改正之!)比如:int array0[5] = {0};int a_temp = *(array0++); //绝对错误!3、无论什么类型,在输出结果时,必定会有相应的存储空间存储该结果;所以,必 阅读全文
posted @ 2013-07-25 12:54 -赶鸭子上架- 阅读(243) 评论(0) 推荐(0) 编辑
  2013年7月24日
摘要: 《剑指Offer——名企面试官精讲典型编程题》 面试题3: 二维数组元素从左到右、从上到下递增,输入一个二维数组和一个整数, 查找该整数。自己的思路:有序条件下进行查找,当然最简单的是顺序查找(O(n))。但更好的方法如下: 1、二维数组第1和最后一个元素分别为A,B,同时为最小和最大,先判断输入整数的范围 在A~B之间,转到2; 2、按行分情况查找,每一行采用折半查找(O(logn))。说明:函数返回true代表查找成功,查找位置用引用返回。//《剑指Offer——名企面试官精讲典型编程题》// 面试题3:#include "stdafx.h"#includ... 阅读全文
posted @ 2013-07-24 21:07 -赶鸭子上架- 阅读(571) 评论(0) 推荐(0) 编辑
  2013年7月18日
摘要: 题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。第一感觉:看到这道题后,我先想的便是列出所有子数组,求取和再在这些和中求取最大值,这肯定是最简单的了!自己所写的代码如下:#include "stdafx.h"#include int SubArraySumMax(int arr[], int len);using na 阅读全文
posted @ 2013-07-18 09:49 -赶鸭子上架- 阅读(271) 评论(0) 推荐(0) 编辑
  2013年7月15日
摘要: *题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。*句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。*例如输入“Iamastudent.”,则输出“student.aamI”。终于有一道题的思路是一样的了! 感觉自己的基础太差了!思路:整体反转+单词再反转。//时间复杂度为O(n)//自己编写#include "stdafx.h"#includevoid ReserveSentence(char str[]);using namespace std;int main(int argc, char* argv[]){ char str[] 阅读全文
posted @ 2013-07-15 11:03 -赶鸭子上架- 阅读(206) 评论(0) 推荐(0) 编辑
  2013年7月14日
摘要: #include "stdafx.h"#include using namespace std;void FirstNoRepeatCh(const char str[], char& ch);int main(int argc, char* argv[]){ const char* str = "cdceasafggsfrrtkkxx"; char ch = '@'; FirstNoRepeatCh(str,ch); if(ch == '@') cout<<"No Find!"&l 阅读全文
posted @ 2013-07-14 10:18 -赶鸭子上架- 阅读(254) 评论(0) 推荐(0) 编辑
  2013年7月11日
摘要: 题目要求:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。分析:这道题能够很好地反应出程序员的思维和编程习惯。的确,自己编写的程序代码如下:#include "stdafx.h"#includevoid String2Num(const char* str);using namespace std;int main(int argc, char* argv[]){ const char* str = "2343121"; String2Num(str); return 0;}void 阅读全文
posted @ 2013-07-11 22:48 -赶鸭子上架- 阅读(243) 评论(0) 推荐(0) 编辑