C/C++
C/C++
Fire_Sky_Ho
这个作者很懒,什么都没留下…
展开
-
归并排序-有递归描述过程
引用:图解排序算法(四)之归并排序#include<iostream>#include<ctime>#include<cstdlib>using namespace std;const int N = 10;void mergeSort ( int *arr, int left, int mid, int right ){ int i = left...原创 2018-02-09 16:45:53 · 873 阅读 · 0 评论 -
图解&代码 归并排序
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。分而治之 可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以理解为就...转载 2018-02-09 16:43:21 · 208 阅读 · 0 评论 -
从头到尾彻底理解KMP
从头到尾彻底理解KMP作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。后收录于新书《编程之法:面试和算法心得》第4.4节中。1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以一直想找机转载 2017-11-28 23:54:59 · 237 阅读 · 0 评论 -
C++ 二叉树建立,遍历
#includeusing namespace std;struct bitNode{ char data; bitNode *lchild, *rchild;} ;void createBiTree ( bitNode *&T ){ char ch; cin >> ch; if ( ch == '#' ) T = nullptr; else { T = ne原创 2017-11-19 18:49:40 · 2103 阅读 · 2 评论 -
中缀表达式转化为后缀表达式,并计算结果
#include using namespace std;int Digitizing ( char ch ) //字符转换成数字才可在栈中比较{ switch ( ch ) { case '+': return 0; break; case '-': return 1; break; case '*': return 2; break; cas原创 2017-10-23 20:18:09 · 416 阅读 · 0 评论 -
简单链表合并题
#include #include #include using namespace std;const int A = 4;const int B = 7;struct Node{ int data; Node *next;};void createList ( Node *&head, Node *&pNew, int *arr, int n ){ int i;原创 2017-09-26 23:13:57 · 313 阅读 · 0 评论 -
含头结点的C++尾插法创建简单链表并输出
#include using namespace std;const int N = 10;struct Node{int data;Node *next;};//尾插法链表创建与输出int main(){int i;Node *head, *pNew, *pEnd;//一个头结点,一个不断创建的新节点,一个始终会指向末端的尾结点原创 2017-09-23 19:11:58 · 4209 阅读 · 0 评论 -
头插法和尾插法图文并茂
、#include "stdio.h"#include "stdlib.h"typedef struct List { int data; //数据域 struct List *next; //指针域} List;void TailCreatList(List *L) //尾插法建立链表{ List *s, *r;//s用来指向新生成的节点。r始终指向L的终端节点。 r = L; //原创 2017-09-23 17:15:46 · 41918 阅读 · 0 评论 -
单链表逆序
题目:给定一个带附加头节点的单链表,设first为其头指针,节点的结构为(data,link),data为数据域,link为指针域,试写出算法:通过遍历一趟链表,将链表中所有节点逆序连接 分析:这是很经典的“单链表逆序”问题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能开辟额外的节点空间(否则可以在遍历原链表的同时使用前插法建立一个逆序链表),有的没有明确说明,但是如果面试者转载 2017-08-30 16:14:11 · 964 阅读 · 0 评论 -
C ++ Primer Plus 第六版 第十七章编程练习答案
1.编写一个程序计算输入流中第一个$之前的字符数目,并将$留在输入流中。#include #include #includeusing namespace std;int main(){ string str; getline ( cin, str ); int count = str.find ( '$' ) ; for ( unsigned int i = 0; i原创 2017-08-29 13:25:52 · 539 阅读 · 0 评论 -
C ++ Primer Plus 第六版 第十三章编程练习答案
1.以下面的类声明为基础:// base classclass Cd { //represents a CD diskprivate:char performers[50];char label[20];int selections; //number of selectionsdouble playtime; //playing time in minutepub原创 2017-08-15 17:11:19 · 1251 阅读 · 0 评论 -
C ++ Primer Plus 第六版 第十二章编程练习答案
1.对于下面的类声明class Cow{char name[20];char * hobby;double weight;public:Cow();Cow(const char*nm, const char * ho, double wt);Cow(const Cow &c);~Cow();Cow & operator=(const Cow &c);原创 2017-08-11 17:44:32 · 1819 阅读 · 0 评论 -
有关析构的顺序
#include using namespace std;class num{public: num() { n = new int; cout << "不带参数的构造函数调用\n"; } num ( int i ) { n = new int; *n = i; cout << "带一个参数的构造函数调用\n"; } ~num() { delete原创 2017-08-08 16:11:04 · 440 阅读 · 0 评论 -
类里定义的枚举使用方法
假如有一个类class Stonewt{public: enum Format {st, ilb, flb};private: enum {Lbs_per_stn = 14}; int stone; double pds_left; double pounds; Format fmat;public: Stonewt ( double lbs ); Stonewt (原创 2017-07-29 17:05:58 · 3550 阅读 · 0 评论 -
C ++ Primer Plus 第六版 第十一章编程练习答案
1.修改程序清单11.5,使之将一系列连续的随机漫步者位置写入到文件中。对于每个位置,用步号进行标志。另外,让该程序将初始条件(目标距离和步长)以及结果小结写入到该文件中。该文件的内容与下面类似:Target Distance: 100, Step Size: 200: (x,y) = (0, 0)1: (x,y) = (-11.4715, 16.383)原创 2017-07-28 12:33:09 · 1491 阅读 · 0 评论 -
C ++ Primer Plus 第六版 第十章编程练习答案
1.为下面这个类提供方法和定义,并编写一个小程序用于演示所有特性。一个类来表示银行账户,数据成员包括储户姓名、账号(使用字符串)和存款。成员函数执行如下操作:①创建一个对象并将其初始化;②显示储户姓名、账号和存款;③存入参数指定的存款;④取出参数指定的款项。//bank.h#includeusing namespace std;原创 2017-07-20 15:22:36 · 1694 阅读 · 0 评论 -
C ++ Primer Plus 第六版 第九章编程练习答案
2.修改程序清单9.9,用string对象代替字符数组。这样,该程序将不再需要检查输入的字符串是否过长,同时可以将输入字符串同字符串""进行比较,以判断是否为空行。 #include using namespace std;void strcount ( const string str ){ static int total = 0; int count = 0, i = 0;原创 2017-07-19 12:52:29 · 737 阅读 · 0 评论 -
C++中的static关键字 ,外部链接性,内部链接性和无链接性
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:[cpp] view转载 2017-07-18 14:13:21 · 4241 阅读 · 1 评论 -
char *和char[]的一点小见解
你可以试试看用 VS写这样的代码char *str = "hello";str[0] = 'a';然后运行时就报错了。然而char str[] = "hello";str[0] = 'a';这样就不会报错。原因是 hello 字符串分配的地方不同所以,const char *str = "hello";比较好 。char str[] =原创 2017-07-15 16:35:20 · 323 阅读 · 0 评论 -
C ++ Primer Plus 第六版 第八章编程练习答案
1.编写通常接受一个参数(字符串的地址),并打印该字符串的函数。不过,如果提供了第二个参数(int类型),且该参数不为0,则该函数打印字符串的次数将为该函数被调用的次数(注意,字符串的打印次数不等于第二个参数的值,而等于函数被调用的次数)。是的,这是一个非常可笑的函数,但它让读者能够使用本章介绍的一些技术。在一个简单的程序中使用该函数,以演示该函数是如何工作的。#include #inc原创 2017-07-15 14:55:42 · 3142 阅读 · 2 评论 -
话说C++中的左值、纯右值、将亡值
写在前面 C++中有“左值”、“右值”的概念,C++11以后,又有了“左值”、“纯右值”、“将亡值”的概念。关于这些概念,许多资料上都有介绍,本文在拾人牙慧的基础上又加入了一些自己的一些理解,同时提出了一些需要读者特别注意的地方,主要目的有二: 1.尽可能地将这些概念介绍清楚。 2.为后续介绍完美转发和移动语义做好铺垫。正文一、表达式转载 2017-07-15 14:03:32 · 444 阅读 · 0 评论 -
C++按引用传递参数的问题
#includeusing namespace std;double cube(double);double refcube(double&);int main(){double x=3.0;cout<<cube(x)<<" = cube of";cout<<x<<endl;cout<<refcube(x)<<" = cube of";cout<<x<<endl;system原创 2017-07-14 13:58:55 · 733 阅读 · 0 评论 -
C ++ Primer Plus 第六版 第七章编程练习答案
1.编写一个程序,不断要求用户输入两个数,直到其中一个为0。对于每两个数,程序将使用一个函数来计算它们的 调和平均数,并将结果返回给main(),而后者将报告结果。调和平均数指的是倒数平均值的倒数,计算公式如下: 调和平均数 = 2.0 * x * y / (x + y)#include double average ( double x, double y ){ return 2 *原创 2017-07-12 13:33:28 · 2691 阅读 · 0 评论 -
C ++ Primer Plus 第六版 第六章编程练习答案
1. 编写一个程序,读取键盘输入,直到遇到@符号为止,并回显输入(数字除外),同时将大写字符转换为小写,将小写字符转换为大写(别忘了cctype函数系列)。#include#includevoid main(){ using namespace std; char ch; while((ch=cin.get())&&ch!='@') { if(isdigit(ch))原创 2017-07-08 15:01:57 · 2295 阅读 · 0 评论 -
cin.good()的值
编译器VC6.0下cin.good(),原来的值默认为1。如果输入的值与定义的变量类型不同,则输出cin.good()为0;#includeconst int Max=5;void main(){ using namespace std; int x; cin>>x;cout<<cin.good()<<endl;}原创 2017-07-07 17:52:08 · 1786 阅读 · 0 评论 -
C ++ Primer Plus 第六版 编程练习答案4.13.9,错解与正解,顺便求解答!
6. 结构CandyBar包含3个成员,如变成练习5所示。 请编写一个程序,创建一个包含3个元素的CandyBar数组, 并将它们初始化为所选择的值,然后显示每个结构的内容。 9.完成编程练习6,但使用new来动态分配数组,而不是声明一个包含3个元素的CandyBar数组。error:#include#includeusing namespace std;struct can原创 2017-07-06 15:41:33 · 698 阅读 · 0 评论 -
C ++ Primer Plus 第六版 编程练习答案4.13.2
2. 修改程序清单4.4, 使用C++ string 类而不是char 数组。网上很多答案不完整或者出错,原来是没有及时清楚缓冲区导致,以下是正确代码。原创 2017-07-06 13:44:42 · 546 阅读 · 0 评论