自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 红黑树的基本操作

template<class K, class V>class RBTree{ typedef RBTreeNode<K, V> Node;public: RBTree() :_pRoot(NULL) {} //插入 bool Insert(const K& key, const V& value) { return _

2017-09-01 22:33:55 536

原创 链表基本操作及面试题

头文件#ifndef _LINKED_LIST_H__#define _LINKED_LIST_H__#include<iostream>using namespace std;#include<cassert>typedef int Datatype;struct Node{ Node(Datatype data=0,Node* prev = NULL, Node* next

2017-08-28 23:27:47 470

原创 sizeof是函数吗,具体使用方法

1.sizeof是运算符,不是函数; 2.sizeof不能求void类型的长度,void本来申明的就是一个空类型,自己都不知道自己的类型有多大;但是sizeof可以求得void指针的大小; int a = 10; void* p = &a; printf(“%d\n”,sizeof(p)); 输出的结果为4 3.sizeof求一个指针的大小,不管指针

2017-08-26 20:58:27 3594

原创 static关键字的作用

在C语言中; 1.static修饰局部变量,被static修饰的局部变量只执行一次,生命周期被改变了,随整个程序,储存位置在静态常量区,初始化的时候自动被初始化为0,但是作用域被没有发生改变。#include <stdio.h> void test(){ static int num = 0; num++; printf("%d\n", num);}int

2017-08-25 13:35:24 358

原创 二叉树的创建及一些基本操作

.hpp#define _CRT_SECURE_NO_WARNINGS 1#pragma once#include<iostream>using namespace std;#include<assert.h>#include<stack>#include<queue>template<class T>struct BinaryTreeNode{ BinaryTreeNode(

2017-08-23 17:21:54 566

原创 怎样防止头文件被重复引用

方式一:条件编译:#ifndef #define......//一些声明语句 #endif这种方式依赖于宏名称不能冲突,而且这种方式可以保证同一个文件不被包含多次,也能保证内容完全相同的两个文件不会不小心同时包含。但是,如果宏名称相同,就会明明你包含了头文件,却找不到源文件。条件编译的有点事,跨平台效果好。 例://file1h#define __BOOK_H_现在有另外一个file2.bo

2017-08-19 22:45:20 477

原创 volatile关键字的作用

volatile本来的意思就是可变的,易变的,作为C语言关键字,是告诉编译器,他后面定义的变量随时都会改变,因此编译后面的程序每次需要存储或者读取这个变量的时候,都需要直接从变量地址中读取数据。如果没有volatile这个关键字修饰,编译器可能优化读取或存储,可能暂时使用暂存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的情况。

2017-08-17 16:10:53 141

原创 assert是函数吗,它在调试版本下和发布版本下有什么不同

1.assert是宏,不是函数。他被包含在asset.h的头文件中。 2.assert 只在debug版本下有作用,在debug版本下,在预处理器处理时完全被替换,如果assert()括号里面的内容为假,就会报错,程序停止运行。但是在release版本下没有任何作用,完全被优化,没有任何接口。他的作用就是在调试阶段把错误排除掉。

2017-08-14 16:49:37 754

原创 程序是如何编译执行的,背后都发生了什么

一个程序从源文件test.c到可执行程序test.o,一共经历了以下步骤: 这是一个源程序到可执行程序所经历的过程,但是这每个小阶段,编译器都做了些什么呢? 1.预处理器处理: 1).头文件的包含,预处理指令#include用于处理头文件的包含,头文件有两种形式,< xxx>和“xxx”,#include< xxx>所包含的头文件,是告诉编译器,该头文件所包含的内容从系统中去查找,#

2017-08-14 12:04:04 552

原创 c++类的特性之继承

继承: c++类的三大特性,封装,继承,多态。继承的作用是代码的复用和多态的实现。类的继承,是新的类从已有类那里得到已有的特性,并且有自己的的特性,从已有类产生新类的过程就是类的派生。原有类叫基类或者父类,产生的新类叫派生类或者子类。继承分为:单继承,多继承,菱形继承。 单继承: 我们用一个简单的例子来说明: class Base

2017-07-24 17:29:50 1047

原创 String类

模拟实现string类: 头文件:#ifndef _STRING_H__#define _STRING_H__#include<iostream>using namespace std;#include<cstring>#include<cassert>class String{ friend ostream& operator<<(ostream _cout, const S

2017-07-23 20:32:06 192

原创 c++实现顺序表

顺序表是用一组地址连续的储存单元依次储存数据元素的线性结构。顺序表适合存储用来频繁的查找的数据结构。头文件:#ifndef _SEQLIST_H__#define _SEQLIST_H__#include<iostream>using namespace std;typedef int DataType;class List{public: List(); List(int

2017-07-20 22:16:13 232

原创 复数类

复数类: **复数简单的运算,复数x被定义为二元有序实数对(a,b);记为z=a+bi;i是虚数单位。 **在复数a+bi中,a=Re(z)成为实部,b=lm(z)称为虚部。当虚部为0时,这个虚数可以视为实数。当虚部部位0,实部为0时,称z为纯虚数。头文件:#ifndef _COMPLEX_H__#define _COMPLEX_H__#include<stdlib.h>#incl

2017-07-19 16:27:09 1046

原创 简单日期类操作(c++)

简单的日期类操作,如一个日期加上指定天数后的日期,日期减去日期有多少天,求指定的一天是星期几,和一些有关类的函数。 头文件:#ifndef _DATE_H__#define _DATE_H__#include<iostream>using namespace std;class Date{public: Date(int year = 1900, int month = 1, in

2017-07-19 16:16:17 301

原创 【简易通讯录】-----C语言实现

【简易通讯录】—–C语言实现 该通讯录实现了一个普通通讯录所具有的基本功能:联系人的添加,删除,修改,排序,查找,清空等功能。使用了结构体自定义类型实现,排序部分使用了冒泡排序。 头文件部分:#ifndef __CONTACTS_H_#define __CONTACTS_H_#include<stdio.h>#include<stdlib.h>#include<string.h>

2017-07-11 18:53:55 521

原创 把一个字符串左旋k个字符的2种方法

第一种是一个字符一个字符的左移,把第一个字符存临时变量里面,把后面的字符每一个往前移动一个位置,‘\0’不移动,然后把临时变量的值放在‘\0’前面的位置。这样重复k次; 第二种是把需要左移的k个字符逆序,再把剩下的字符逆序,最后再把整体逆序,就得到我们想要的结果了。 第一种方法的实现:#include<stdio.h>#include<stdlib.h>#include<string.h>v

2017-05-27 16:13:24 353

原创 main函数参数的解析及应用

我们平时在使用main函数的时候是很少注意main函数的参数,但实际上main函数是有参数的,main函数是由系统调用,在调用的同时传参。 main函数的参数原型:int main(int argc,char*argv[],char*envp[])argc 是 argument count的缩写,表示传入main函数的参数个数,包含第一个参数; argv是argument vector的缩写,首

2017-05-24 19:11:27 837

原创 二分查找

二分查找又叫折半查找,优点是比较次数少,查找速度快,平均性能好;缺点为要求待查表为有序表,且插入删除删除困难。因此,折半查找适用于不经常变动而查找频繁的有序列表。二分查找的实现原理是: 先假设表中元素是按升序排列,将表中间位置的关键字与需要查找的目标关键字进行比较,如果相等,则查找成功;否则,利用中间位置的关键字将表分成前,后两个子表,如果中间位置的关键字比目标关键字小,则进一步查找下一个后-子表,

2017-05-22 12:39:40 247

原创 从最简单的add函数调用过程分析函数栈桢创建和销毁的过程

这是一个简单的add()函数,我们可以很直接的看出它的调用过程和运行结果;但是对于机器来说,要怎样来执行这个程序呢,这个过程又是怎样的呢。 在编译器(vs2013)中运行这个程序,我们可以从生成的汇编代码来逐步分析这个函数运行的过程;截取部分反汇编,我们来进行逐句分析。 在main函数之前,系统会用—mainCRStartup 来调用main函数,所以main函数的调用过程为: 1:e

2017-05-21 13:31:30 1637

原创 和字符串有关的函数的模拟实现 strlen strcpy strcat strstr strcmp

strlen 函数原型: size_t strlen(const char* string); 功能: 计算字符串长度,遇到‘/0’停下;define _CRT_SECURE_NO_WARNINGS 1includeincludeinclude

2017-05-18 17:26:35 834

原创 memcpy和memmove的模拟实现

momcpy 函数原型: void * momcpy (void*dest, const void*str, size_t count); 功能 :由str所指向内存区域复制count个字节到dest所指向的内存区域。 缺点:str所指向的内存区域和destiny所指向的内存区域不可重叠。 mommove 函数原型: void * mommove (void*dest, const voi

2017-05-18 16:57:30 2466

原创 关于sizeof 和strlen 的计算的知识总结

define _CRT_SECURE_NO_WARNINGS 1includeincludeincludeinclude

2017-05-18 16:41:20 377

原创 二分查找

二分查找又叫折半查找,优点是比较次数少,查找速度快,平均性能好;缺点为要求待查表为有序表,且插入删除删除困难。因此,折半查找适用于不经常变动而查找频繁的有序列表。二分查找的实现原理是: 先假设表中元素是按升序排列,将表中间位置的关键字与需要查找的目标关键字进行比较,如果相等,则查找成功;否则,利用中间位置的关键字将表分成前,后两个子表,如果中间位置的关键字比目标关键字小,则进一步查找下一个后-子表

2017-04-18 17:56:23 294

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除