自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在单项链表中用O(1)的时间删除指定节点

题目的前提是被删除的节点存在链表中。(如果要判断有没有在链表中,又得遍历,那时间肯定不会是O(1))提到删链表节点p,首先想到是遍历整个链表,找到删除节点的前驱q,然后改变节点指向被删除的节点的下一个(q->next = p->next),删除节点(delete p),但是,这样删除单链表的某一节点,时间复杂度就是O(n),不符合要求;时间复杂度是O(n)的做法就不说了,...

2019-03-20 21:00:15 220

原创 使用STL库时需要注意的事项——迭代器失效

当使用一个容器的insert或者erase函数通过迭代器插入或删除元素"可能"会导致迭代器失效,因此我们为了避免危险,应该获取insert或者erase返回的迭代器,以便用重新获取的新的有效的迭代器进行正确的操作iter=vec.insert(iter);iter=vec.erase(iter);迭代器失效的类型:1.由于插入元素,使得容器元素整体“迁移”导致存放原容器元素的...

2019-03-20 20:28:26 264

原创 静态库和动态库

函数是可在整个程序中重用的代码块。使用它们可以节省时间,无需多次重写代码。与函数一样,库也可以节省时间,因为它们使函数可以在多个程序中重用。 静态库或静态链接库是一组例程,外部函数和变量,它们在编译时在调用者中解析,并由编译器,链接器或绑定器复制到目标应用程序中,从而生成目标文件和一个独立的可执行文件。动态链接只包括库的地址(而静态链接是浪费空间)动态链接在运行时链...

2019-03-20 11:04:22 2280

原创 C++中重载、覆盖(重写)和隐藏的区别

基本概念:重载:是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。1 class A{2 public:3 void test(int i);4 void test(double i);//overload5 void test(int i, double j);//ove...

2019-03-14 10:22:27 107

原创 C语言获取文件的大小

一、获取文件系统属性,读取文件大小。在C语言库函数中有stat函数,可以获取文件的基本信息,其中就有文件大小。 1 2 3 4 5 6 7 8 9 #include<sys/stat.h>//包含头文件。 intfile_size(char*filename)//获取文件...

2019-03-11 14:37:37 11378

原创 C++各类型的sizeof

以下是在64位系统中C++各类型的sizeof大小的测试#include<iostream>#include<string>using namespace std;int main(){ char c,*pc; bool b,*pb; int i,*pi; float f,*pf; double d,*pd; s...

2019-03-07 23:40:16 481

原创 C++类的静态数据成员

class Box{ public: int colume(); privare: static int height; int width; int length;}1.如果希望各对象中的数据成员值是一样的,就可以把它定义为静态数据成员,这样他就为各...

2019-03-06 11:25:14 307

原创 malloc、free、new、delete的比较

malloc与free都是c语言中的函数,malloc的返回值为void *型,在使用的时候要注意对其进行类型转换, eg:char* p=(char*)malloc(number*sizeof(char));malloc在分配内存的时候是以字节来分配的。在分配之前也会记录数组的大小和类型。最后返回一个指向数据区的void型指针。mall...

2019-03-05 20:05:17 236

原创 C/C++指向函数的指针

类型名(*指针变量名 )(函数参数表列)如 int(* p)(int ,int )* p两侧的括号不可省略,表示p先与*结合,是指针变量,然后再与后面的()结合,()表示是函数,即该指针变量不是指向一般的变量,而是指向函数。如果写成int * p(int , int);由于()优先级高于*,它相当于int *(p(int , int )),就成为声明一个p函数了(这个函数的返回值是指向...

2019-03-05 16:53:16 102

原创 C++类成员初始化顺序

1、成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关。因为成员变量的初始化次序是根据变量在内存中次序有关,而内存中的排列顺序早在编译期就根据变量的定义次序决定了。这点在EffectiveC++中有详细介绍。2、如果不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关。什么意思呢,举个栗子1.在初始化...

2019-03-05 15:40:09 544

原创 二叉树的公式

变量的意义:n为总节点数,n0度为0的节点也就是叶子结点,n1度为1的结点,n2度为2的结点。1.对于任何二叉树:n0 = n2+12.对于完全二叉树:当n为奇数时:n0 = (n+1)/2,n1 = 0,n2 = (n-1)/2当n为偶数时:n0 = n/2 ,n1 = 1 ,n2 = (n-2)/2...

2019-03-04 15:50:48 502

原创 完全二叉树叶子节点、度为1节点、度为2节点的个数

设叶子节点个数为n0,度为1的节点个数为n1,度为2的节点个数为n2,必有 n0+n1+n2 = n(1) 对于二叉树有: n0 = n2+1(2) 由上面两式 ==> n0 = (n+1-n1)/2 ,n2 = (n-1-n1)/2(3) 由完全二叉树的性质可知:n1 = 0 或 1n1=0,n为奇数时:n0 = (n+1) / 2 n1=1,n为偶数时:n0 = n /...

2019-03-04 15:43:02 15665

空空如也

空空如也

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

TA关注的人

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