上一页 1 2 3 4 5 6 ··· 8 下一页
摘要: 1:已知两个链表head1和head2各自有序,请把它们合并成一个链表,依然有序。使用非递归方法以及递归方法。 2:首先介绍非递归方法。局部引用方法:这种方法避免使用虚拟节点(dummy node),而是使用一个指向指针的指针,struct node** lastPtrRef,这个指针指向结果链表的 阅读全文
posted @ 2017-09-27 11:02 一串字符串 阅读(2631) 评论(0) 推荐(0) 编辑
摘要: 1:这里有一个比较简单的解法。设置两个指针p1、p2。每次循环p1向前走两步。直到p2碰到NULL指针或者两个指针相等时结束循环。如果两个指针相等,则说明存在环。代码如下: // ConsoleApplication15.cpp : 定义控制台应用程序的入口点。 // #include "stdaf 阅读全文
posted @ 2017-09-27 09:55 一串字符串 阅读(1534) 评论(0) 推荐(0) 编辑
摘要: 1:代码如下: // ConsoleApplication15.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <malloc.h> #include <iostream> using namespace std; typedef struc 阅读全文
posted @ 2017-09-27 09:18 一串字符串 阅读(1303) 评论(0) 推荐(0) 编辑
摘要: 1:这里使用一个只用一遍扫描的方法。描述如下: 假设mid指向当前已经扫描的子链表的中间元素,cur指向当前已扫描链表的末节点,那么继续扫描即移动cur到cur->next,这时只需判断一下应不应该移动mid到mid->next就行了。所以一遍扫描就能找到中间位置。代码如下: // ConsoleA 阅读全文
posted @ 2017-09-26 22:18 一串字符串 阅读(1539) 评论(0) 推荐(0) 编辑
摘要: 1:这是一个经常被问到的面试题,也是一份非常基础的问题。比如一个链表是这样的: 1->2->3->4->5通过逆置后成为5->4->3->2->1。 最容易想到的方法是遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续 阅读全文
posted @ 2017-09-26 18:09 一串字符串 阅读(1936) 评论(0) 推荐(0) 编辑
摘要: 1:代码如下: // ConsoleApplication15.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <malloc.h> #include <iostream> using namespace std; typedef struc 阅读全文
posted @ 2017-09-26 18:03 一串字符串 阅读(1230) 评论(0) 推荐(0) 编辑
摘要: 1:向链表中某个位置(第pos个节点)之后插入节点,这里分别插入到链表首部、插入到链表中间,以及链表尾端3个位置。代码如下: // ConsoleApplication15.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <malloc.h> 阅读全文
posted @ 2017-09-26 17:43 一串字符串 阅读(4709) 评论(0) 推荐(0) 编辑
摘要: 1:代码如下: // ConsoleApplication15.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <malloc.h> #include <iostream> using namespace std; typedef struc 阅读全文
posted @ 2017-09-26 17:03 一串字符串 阅读(1654) 评论(0) 推荐(0) 编辑
摘要: 1:首先参考别人的单链表的创建及打印,代码如下: #include "stdafx.h" #include<stdio.h> #include<malloc.h> typedef struct LNode { int data; struct LNode *next; }LNode; /*上面只是定 阅读全文
posted @ 2017-09-23 17:39 一串字符串 阅读(2341) 评论(0) 推荐(0) 编辑
摘要: 1:代码如下: // ConsoleApplication15.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <malloc.h> typedef struct node//定义链表结构体 { int data;//节点内容 node *n 阅读全文
posted @ 2017-09-23 16:11 一串字符串 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 1:结构体 结构体是一种自定义数据类型。声明结构体时使用的关键字是struct,定义一种结构体的一般形式为: 结构体类型与基本类型一样,都是从C语言中继承下来的,但是C++结构体与C语言结构体是有区别的,C语言中没有继承、成员函数等概念,所以C语言中的结构体成员只能包含C语言中的数据类型,不能包含成 阅读全文
posted @ 2017-09-23 09:34 一串字符串 阅读(5639) 评论(0) 推荐(0) 编辑
摘要: 1:默认模板参数是指类模板中由默认的数据类型作为参数的参数,在模板定义时,还可以为默认的数据类型声明,变量,并为变量赋值。代码如下: // 9.5.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include <iostream> using namespace 阅读全文
posted @ 2017-09-22 21:44 一串字符串 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 1:默认模板参数就是在类模板定义时设置类型形式参数表中的一个类型参数的默认值,该默认值是一个数据类型。有了默认的数据类型参数后,在定义模板的新类型时就可以不进行指定。代码如下: // 9.4.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include < 阅读全文
posted @ 2017-09-22 21:34 一串字符串 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 1:使用template关键字不但可以定义函数模板,而且可以定义类模板。类模板代表一族类,它是用来描述通用数据类型或处理方法的机制,它使类中的一些数据成员和成员函数的参数或返回值可以取任意数据类型。类模板可以说是用类生成类,减少了类的定义和数量。 2:类模板的一般定义形式如下: template < 阅读全文
posted @ 2017-09-22 20:44 一串字符串 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 1:整形数和实型数编译器可以直接进行比较,所以使用函数模板后也可以直接进行比较,但如果是字符指针指向的字符串该如何处理呢?这时可以通过重载函数模板来实现。通常字符串需要库函数来进行比较,通过重载函数模板实现字符串的比较。 2:代码如下: // 9.2.cpp : 定义控制台应用程序的入口点。 // 阅读全文
posted @ 2017-09-22 20:24 一串字符串 阅读(802) 评论(0) 推荐(0) 编辑
摘要: 1:函数模板不是一个实在的函数,因此编译器不能为其生成可执行的代码。定义函数模板只是一个对函数功能框架的描述,在具体执行时,将根据传递的实际参数决定其功能。 2:函数模板定义的一般形式如下: template <类型形式参数> 返回类型 函数名(形式参数表) { ...//函数实现 } 其中temp 阅读全文
posted @ 2017-09-22 16:46 一串字符串 阅读(2769) 评论(0) 推荐(0) 编辑
摘要: 1:在讲述类的内容时说明了隐藏数据成员的好处,但是有时类会允许一些特殊的函数直接读写其私有数据成员。 使用friend关键字可以使特定的函数或者别的类的所有成员函数对私有数据成员进行读写。这既可以保持数据的私有性,又能够使特定的类或函数直接访问私有数据。 有时普通函数需要直接访问一个类的保护或私有数 阅读全文
posted @ 2017-09-22 15:53 一串字符串 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 1:抽象类通常作为其他类的父类,如果从抽象类派生的子类是抽象类,则子类必须实现父类中的所有纯虚函数。代码如下: // 8.10.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; c 阅读全文
posted @ 2017-09-22 15:07 一串字符串 阅读(1000) 评论(0) 推荐(0) 编辑
摘要: 1:包含有纯虚函数的类称为抽象类,一个抽象类至少具有一个纯虚函数。抽象类只能作为基类派生出的新的子类,而不能在程序中被实例化(即不能说明抽象类的对象),但是可以使用指向抽象类的指针。在程序开发过程中并不是所有代码都是由软件构造师自己写的,有时候需要调用库函数,有时候分给别人写。一名软件构造师可以通过 阅读全文
posted @ 2017-09-22 12:44 一串字符串 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 1:以前讲到从CBird类和CFish类派生子类CWaterBird时,在CWaterBird类中将存在两个CAnimal类的复制。那么如何在派生CWaterBird类时使其只存在一个CAnimal基类呢?C++语言提供的虚继承机制能够解决这个问题。 代码如下: // 8.8.cpp : 定义控制台 阅读全文
posted @ 2017-09-22 11:10 一串字符串 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 1:多态性是面向对象程序设计的一个重要特征,利用多态性可以设计和实现一个易于扩展的系统。在C++语言中,多态是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数,发出同样的消息被不同类型的对象接受时,将导致完全不同的行为。这里所说的消息主要是指类的成员函数的调用,而不同 阅读全文
posted @ 2017-09-21 22:01 一串字符串 阅读(718) 评论(0) 推荐(0) 编辑
摘要: 1:单一继承是先调用基类的构造函数,然后调用派生类的构造函数,但多重继承将如何调用构造函数呢?多重继承中的基类构造函数被调用的顺序以派生表中声明的顺序为准。派生表就是多重继承定义中继承方式后面的内容,调用顺序就是按照基类名标识符的前后顺序进行的。 2:代码如下: // 8.6.cpp : 定义控制台 阅读全文
posted @ 2017-09-21 21:31 一串字符串 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 1:C++允许子类从多个父类继承公有的和受保护的成员,这称为多重继承。 2:多重继承的定义。多重继承有多个基类名称标识符,其声明形式如下: class 派生类名标识符:[继承方式] 基类名标识符1,...,访问控制修饰符 基类名标识符n { [访问控制修饰符:] [成员声明列表] } 声明形式中有“ 阅读全文
posted @ 2017-09-21 20:55 一串字符串 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 1:当父类含有带参数的构造函数时,创建子类的时候会调用它吗?答案是通过显示方式才可以调用。 无论创建子类对象时调用的是那种子类构造函数,都会自动调用父类默认构造函数。若想使用父类带参数的构造函数,则需要显式的方式。 2:代码如下: // 8.3.cpp : 定义控制台应用程序的入口点。 // #in 阅读全文
posted @ 2017-09-21 20:36 一串字符串 阅读(1995) 评论(0) 推荐(0) 编辑
摘要: 1:父类和子类中都有构造函数和析构函数,那么子类对象在创建时是父类先进行构造还是子类先进行构造?同样,在子类对象释放时,是父类先进行释放,还是子类先进行释放?这都是有先后顺序的。答案是当从父类派生一个子类并声明一个子类的对象时,它将先调用父类的构造函数,然后调用当前类的构造函数来创建对象;在释放之类 阅读全文
posted @ 2017-09-21 18:02 一串字符串 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 1:关键字public、private、protected说明类成员是共有的、私有的,还是保护的。这3个关键字将类划分为3个区域,在public区域的类成员可以在类作用域外被访问,而private区域和protected区域只能在类作用域内被访问。 2:这3种类成员的属性如下: public属性的成 阅读全文
posted @ 2017-09-21 17:38 一串字符串 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 1:继承是面向对象的主要特征(此外还有封装和多态)之一,它使得一个类可以从现有类中派生,而不必重新定义一个新类。继承的实质就是用已有的数据类型创建新的数据类型,并保留已有数据类型的特点,以旧类为基础创建新类,新类包含了旧类的数据成员和成员函数,并且可以在新类中添加新的数据成员和成员函数。旧类被称为基 阅读全文
posted @ 2017-09-20 21:17 一串字符串 阅读(487) 评论(0) 推荐(0) 编辑
摘要: 1:曾经介绍过string类型的数据,它是C++标准模版库提供的一个类。string类支持使用加号“+”连接两个string对象。但是使用两个string对象相减确实非法的,其中的原理就是C++所提供类中重载运算符的功能。在string类中定义了运算符“+”和“+=”两个符号的使用方法,这种使用方法 阅读全文
posted @ 2017-09-20 18:42 一串字符串 阅读(637) 评论(0) 推荐(0) 编辑
摘要: 1:在数组内容中我们了解到,数组是通过指针分配到的一段额定大小的内容。同样,数组也可以包含对象。声明对象数组的形式如下: box boxArray[5]; box boxArray2[2]={box(1,1,1),box(2,2,2)}; box boxArray3[3]={3,styleBox}; 阅读全文
posted @ 2017-09-20 08:43 一串字符串 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 1:当建立一个对象之后,如果不希望它的任何数据发生改变,可以将其直接声明为const对象,例如: const 类名 对象名 const对象必须初始化。我们可以调用它的数据和函数,但是不可以对他们进行修改。除此之外,const对象的this指针也还是常量。我们知道,成员函数在自己的函数体内自动为成员变 阅读全文
posted @ 2017-09-19 18:33 一串字符串 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 1:当函数以相应的类作为形参列表时,对象可以作为函数的参数传入。在学习函数时,我们曾提过,值传递先复制实参产生副本。那么对象的副本是怎样的呢? 复制构造函数是指类的对象被复制时所调用的函数。下面两种情况中对象都会调用复制构造函数。 (1)将一个对象赋值给另外一个对象时。例如: 对象1=对象2; 对象 阅读全文
posted @ 2017-09-19 18:02 一串字符串 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 1:对于类的非静态成员,每个对象都有自己的一份拷贝,即每个对象都有自己的数据成员,不过成员函数却是每个对象共享的。那么调用共享的成员函数如何找到自己的数据成员呢?答案是通过类中隐藏的this指针。 2:示例代码: // 7.6.cpp : 定义控制台应用程序的入口点。 // #include "st 阅读全文
posted @ 2017-09-19 15:43 一串字符串 阅读(534) 评论(0) 推荐(0) 编辑
摘要: 1:指向相应对象的指针就是对象的指针,它的生明方法与其他类型一样,如下: 类名 *p; 类的指针可以调用它所指向对象的成员。形式如下: p->类成员; 2:代码如下: (1)cat.h #include <string> using std::string; class cat { public : 阅读全文
posted @ 2017-09-19 14:23 一串字符串 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 1:静态数据在程序开始时即获得空间,直到程序结束后才被收回。静态数据可以声明在函数体内,也可以声明在函数体外。 类中的静态成员与非静态成员有很大区别。从使用上来将,调用静态成员不需要实例化对象,而是以如下形式调用: 类名::静态成员 从类的设计思想来看,静态成员应该是类共用的。若想在静态函数中使用某 阅读全文
posted @ 2017-09-19 09:48 一串字符串 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 1:析构函数的名称标识符就是在类名标识符前面加“~”。例如: ~CPerson(); 2:实例代码: (1)title.h #include <string>//title是一个类,此为构造了一个类 #include <iostream> using std::string; class title 阅读全文
posted @ 2017-09-19 09:03 一串字符串 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 1:在创建对象时,程序自动调用构造函数。同一个类中可以有多个构造函数,通过这样的形式创建一个CPerson对象,例如: CPerson p1(0,"jack",22,7000); CPerson p2=Cperson(1,"tony",25,8000); CPerson p; 2:利用构造函数初始化 阅读全文
posted @ 2017-09-18 21:36 一串字符串 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 1:建立一个类CPerson。 (1)在person.h文件中代码: class CPerson { public: //数据成员 int m_iIndex; char m_cName[25]; short m_shAge; double m_dSalary; //成员函数 short getAge 阅读全文
posted @ 2017-09-18 21:10 一串字符串 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 1:代码如下: // 6.23.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <string> using namespace std; int main(int argc, _TCHAR* argv 阅读全文
posted @ 2017-09-18 15:55 一串字符串 阅读(2149) 评论(0) 推荐(0) 编辑
摘要: 1:数组中存储的数据也可以是string类型的。代码如下: // 6.22.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <string> using namespace std; int main( 阅读全文
posted @ 2017-09-18 09:27 一串字符串 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 1:使用“》”、“!=”、“>=”等比较运算符可以比较两个字符串的内容。比较的方法是将两个string字符串从头开始比较每一个字符,直到出现两者不一致。比较这两个不相同的字符的字面值,得出相应的结果。代码如下: // 6.21.cpp : 定义控制台应用程序的入口点。 // #include "st 阅读全文
posted @ 2017-09-18 08:57 一串字符串 阅读(9861) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 8 下一页