- 博客(35)
- 资源 (3)
- 收藏
- 关注
原创 C++纯虚函数
1.纯虚函数的定义:在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。纯虚函数可以让类先具有一个操作名称,而没有操作内容,让派生类在继承时再去具体地给出定义。凡是含有纯虚函数的类叫做抽象类。这种类不能声明对象,只是作为基类为派生类服务。除非在派生类中完全实现基类中所有的的纯虚函数,否则,派生类也变成了抽象
2013-10-27 21:17:48 630
原创 二叉树的创建与其递归遍历
//////////////////////////////////////////////// 二叉树的创建,遍历//// 用#表示当前的结点为空/////////////////////////////////////////////////////////////////#include #include #include typedef char ElemTy
2013-10-27 15:48:54 608
转载 一个合格程序员应该看的书
编者按:2008年8月4日,StackOverflow 网友 Bert F 发帖提问:哪本最具影响力的书,是每个程序员都应该读的?“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本, 你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西。”很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是
2013-10-26 10:14:46 699
转载 一高手的C++学习心得
1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而
2013-10-26 10:07:09 672
转载 C语言文本方式和二进制方式读写操作的区别
我们都知道,文本文件和二进制文件在计算机上面都是以0,1存储的,那么两者怎么还存在差别呢?我觉得,对于编程人员,文本文件和二进制文件就是一个声明,指明了你应该以什么方式(文本方式/二进制)打开这个文件,用什么函数读写这个文件(读写函数),怎么判断读到这个文件结尾。具体的说:1。以哪种方式打开一个文件?ANSI C规定了标准输入输出函数库,用 fopen()函数打开文件。fo
2013-10-26 09:55:45 3288
原创 图的邻接表存储结构的定义及其遍历
因为之前的一篇博客图的十字链表存储结构的实现及其遍历是图的邻接表存储结构的延伸,所以这里只是简单的谈一下。邻接表存储结构的定义:#define MaxVex 20 typedef char VertexType ; // 顶点的类型typedef int EdgeType ; // 边的类型typedef struct EdgeNode // 边表结点{ int
2013-10-25 17:03:06 3438
原创 图的邻接矩阵存储结构的实现及其遍历
图的邻接矩阵存储结构是一个很容易理解的存储结构,用一个矩阵记录两个顶点之间的关系,对于无向无权图,用0和1来表示两个顶点之间是否相邻即可,对于无向有权图,使用一个整型来表示两个顶点之间的弧的权值即可。存储结构的定义:typedef char VertexType ; // 顶点类型typedef int EdgeType ; // 边类型#define MaxVex 1
2013-10-25 16:23:42 4124
原创 图的十字链表存储结构的实现及其图的遍历
图的十字链表存储结构是将图的邻接表和逆邻接表组合起来的一个新的存储结构。因为邻接表只能方便计算出图中顶点的出度,而在计算顶点的入度问题时就不太方便了,必须遍历所有的顶点才能知道图中某个顶点的入度。而逆邻接表刚好和邻接表相反,所以组合他们就能够方便计算出图中任意顶点的入度和出度问题。那么,十字链表很复杂吗?其实假如你的链表学到很好的话,那么可以说图的十字链表存储结构的实现是不难理解的。现在我们就
2013-10-25 15:52:07 4482
原创 实现就地逆置单链表
///////////////////////////////////////////// 就地逆置单链表///////////////////////////////////////////////////////////////#include #include #include // 定义单链表的结点typedef struct Node{ int elem
2013-10-22 22:18:43 1103
原创 数据结构-----双向循环链表
////////////////////////////////////////////// 双向循环链表//////////////////////////////////////////////////////////////#include #include #include // 结点定义typedef struct Node { int elem ; s
2013-10-22 22:17:38 686
原创 数据结构----循环链表
#include #include #include typedef struct Node{ int elem ; struct Node * next ;} Node ;typedef struct CycleLinkList { Node * head ;} CycleLinkList ;// 初始化循环链表void InitCycleLinkList( C
2013-10-22 22:16:42 603
原创 数据结构-----双向链表
#include #include #include // 双向链表的的结点定义typedef struct Node{ int elem ; struct Node * next ; struct Node * prior ;} Node ;// 双向链表定义typedef struct DoubleLinkList{ Node * head ;} DoubleL
2013-10-22 22:14:50 673
原创 简单选择排序与直接插入排序
#include #include #include // 顺序表的定义typedef struct SeqList{ int data[100] ; int length ;} SeqList ;//顺序表的初始化void Init( SeqList * S ){ S->length = 0 ;}// 插入void Insert( SeqList * S ,
2013-10-22 22:12:31 888
原创 C++派生类的复制控制
关于C++中的复制控制,我以前的一篇博客C++复制控制中已经说明,下面将说一下派生类中的赋值控制的问题。1.派生类的构造函数构造函数和复制控制成员不能继承,每个类定义自己的构造函数和复制控制成员。像任何类一样,如果类不自己定义自己的默认构造函数和复制控制函数,就将使用合成的版本。1.合成的派生类默认构造函数派生类的合成默认构造函数与非派生类构造函数只有一点不同:除了初始化派生类的数
2013-10-21 20:34:01 1284
原创 C++转换与继承
理解基类类型和派生类之间的转换,对于理解面向对象编程在C++中如何工作非常关键。每个派生类对象都包含了一个基类的部分,这意味着可以像使用基类对象一样在派生类对象上执行操作。因为派生类对象也是基类对象,所以存在从派生类对象的引用到基类对象引用的转换,对指针类似。基类类型对象既可以作为独立部分存在,也可以作为派生类对象的一部分而存在,因此一个基类对象可能也可能不是派生对象的部分,结果没有从基类
2013-10-21 19:23:55 1080 1
原创 C++隐含的this指针
成员函数具有一个附加的隐含的形参,即指向该类对象的一个指针。这个隐含的形参命名为this,与 调用成员函数的对象绑定在一起。 1.const对象只能引用const成员 2.在const成员函数中,this的类型是一个指向const类类型的对象的const指针,既不能改变this指向的值, 也不能改变this所保存的地址 3.非const成员函数中this的类型
2013-10-21 17:34:48 1038
原创 C++构造函数
与其他函数不同的是,构造函数可以包含一个构造函数初始化列表 从概念上讲,可以认为构造函数分为两个阶段:(1).初始化阶段 (2).普通的计算阶段 计算阶段由构造函数的函数体中的所有语句组成。 不管成员是否在构造函数初始化列表中显示初始化,类类型的数据成员总是在初始化阶段初始化。初始化发生在 计算阶段之前注意: 1.必须对任何const或引用类型成员以及
2013-10-21 17:31:04 557
原创 C++复制控制
复制控制:当定义一个新的类型的时候,需要显示和隐式地指定复制,赋值和撤销该类型的对象时会发生什么, 这是通过定义特殊成员:复制构造函数,赋值操作符和析构函数来达到的。 复制构造函数(copy constructor ):是一种特殊的函数,具有单个形参,该形参(常用const)是对 该类型的引用.当定义一个新对象时并用一个同类型的对象对他进行初始化时,将显示使用复制构造函
2013-10-21 17:27:57 744
原创 C++运算符重载
1.大多数的重载操作符可以定义为普通成员函数或类的成员函数 作为类成员的重载函数,其形参看起来比操作数少一个,作为成员函数的 操作符有一个隐含的this形参,限定为第一个操作数 2.操作符定义为非成员函数时,通常必须将他们设置为所操作类的友元 3.重载操作符的设计 (1).不要重载具有内置含义的操作符 赋值操作符 取地址操作符和逗号操
2013-10-21 17:19:37 737
原创 C++中的const数据成员和cons成员函数
//////////////////////////////////////////////////////////////////////////////////////////// const对象只能调用const this函数。// 非const 对象可以调用const this函数和非const this函数//// void display() const : 编译器将该
2013-10-18 20:10:22 1426
原创 根据空格分解英文字符串
将一段英文字符串分解成一个个单词。/////////////////////////////////////////////// 把一段英文短文根据空格分隔///////////////////////////////////////////////////////////////#include #include #include // 用来方便记录分解后的英文字
2013-10-18 19:52:59 890
原创 利用栈实现进制转换
用栈来实现进制间的转换实际上只是利用了栈的“先进后出”的原则,实际上完全可以不用栈来实现进制间的转换,可以将数组逆置来代替栈的作用,而且代码较少。//////////////////////////////////////////////////// 利用栈来实现进制转换//////////////////////////////////////////////////
2013-10-18 19:44:46 4495
原创 洗牌问题
洗牌实际上就是乱数问题,也可以理解为是一种随机数的问题。这其中的思路可以用做一种生成随机数的方法。思路为:用一个数组记录下1----52的数据,然后遍历这个数组,在遍历的过程中,将当前数组的值与产生的随机下标对应的数组中的值进行交换,便利完成,这个数组就成了一个随机数的序列了./////////////////////////////////////////////////////
2013-10-18 19:41:00 899
原创 m进制转换为n进制的问题
m进制转换为n进制存在有公式的转化,但是这里我使用十进制作为桥梁来实现m进制到n进制的转换。但是目前只能支持非大数,以后会研究一下大数之间m进制到n进制的转换,这里先记录一下.////////////////////////////////////////////////////////// 非大数之间的进制转换//// m进制转换为n进制// 2<= m
2013-10-18 19:36:00 1282
原创 约瑟夫环问题
约瑟夫环有很多的变种,其中有一个就是,输入要救的人数,请给出这些人合理的序号以至于他们都能得救。下面是我用循环链表写的一个比较粗糙的算法,就当作为一个记录,等有时间再优化一下代码并且再用数组的方法做一下,最后希望能够收集约瑟夫环的大多数的问题来一个整理,大家见笑了。////////////////////////////////////////////////// 利用链表j解
2013-10-18 19:31:13 920
原创 数据结构---------循环队列与链式队列
1.循环队列有几个初学者需要注意的地方:(1)如何判断循环队列为空或者已满?其实在程序设计的过程中是有很多方法来处理同一个问题的,就看编写代码者如何去处理。一般情况下,有两种方法来处理循环队列的这个问题:a.在循环队列的定义过程中,用一个变量来记录当前队列中元素的个数;b.利用 (Q->front + 1)%MaxSize == Q->rear来判断是否已满;利用Q->front
2013-10-18 19:25:52 930
原创 老鼠走迷宫----------递归问题
老鼠走迷宫是一个典型的递归的问题,写几个这样的题才可以充分理解递归的过程。写递归的过程有几点需要注意:(1)递归结束的条件(2)递归过程的脉络,即逻辑要清晰。///////////////////////////////////////////////////////// 在迷宫中显示老鼠能走出的迷宫的一条路径////////////////////////
2013-10-18 19:12:40 1503
原创 数据结构------建立一个词索引表
最近复习数据结构与算法,就把《数据结构(C语言版)》(清华大学,严蔚敏)拿出来看,在串的那一章的最后有一个程序设计题--------建立一个词索引表,写了一下,代码如下。、文件1:define.h内容:各种数据类型的定义////////////////////////////////////////////////////// 数据类型的定义//////////
2013-10-17 21:51:12 9669 2
原创 编程日记----感想
今天晚上翘了课,一个人找了个自习室,拿出电脑,插上耳机,开始coding。写一个涉及数据结构与算法的比较大的题,2个小时后两百多行代码出来了,代码不算太多,写的时间也不长。但是结合这段时间做项目的经历和以前的一些感想,多了一些感悟,记录下来,勉励自己。1.只有达到一定的代码量才能驾驭某种语言,以至于才可以更快更有效率地去学习其他的语言以及项目的实践。2.数据结构与算法才是程序设计真正表
2013-10-16 21:23:37 919 1
原创 自定义字符串类MyString的C++实现
///////////////////////////////////////////////////////////////// 自定义字符串类MyString///////////////////////////////////////////////////////////////////////////////#include #include #include usin
2013-10-16 17:42:29 10160 3
原创 书店管理系统----涵盖C++大部分主题
文件1:sales_item.h内容:定义一个销售记录的虚基类#ifndef SALESITEMS_H#define SALESITEMS_H#include #include using namespace std ;// 定义一个销售记录的抽象类class Sales_item{public: // 默认构造函数 Sales_item() : sold_
2013-10-16 17:40:01 2678 3
原创 金山2014校园招聘C++程序设计题
1.字符串拷贝函数////////////////////////////////////////////////////////////// 字符串复制////////////////////////////////////////////////////////////////////#include #include #include void my_cop
2013-10-16 17:20:29 932
原创 数据结构-------顺序栈与链栈的实现
1.顺序栈//////////////////////////////////////////////////// 顺序栈的实现//// 包括出栈和入栈///////////////////////////////////////////////////////////////////#include #include #include #include
2013-10-16 17:05:24 839
原创 数据结构-----顺序表与单链表的实现
1.顺序表//////////////////////////////////////////////////////////////// 实现顺序表的初始化,插入,删除,查找,逆置,合并等操作////////////////////////////////////////////////////////////////////////////#include #incl
2013-10-16 17:02:32 1071
原创 C++ 类Static成员分析
1.static成员static数据成员:非static数据成员存在于类类型的每一个对象中,而类static数据成员独立于该类的任意对象而存在;每个static数据成员是与类相关联的对象,并不与该类的对象相关联。static成员函数:static成员函数没有this形参,这就意味着它是不能访问类中的非static数据成员的,而只能访问static数据成员。使用类的static成
2013-10-16 16:57:11 889
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人