自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (4)
  • 收藏
  • 关注

原创 LeetCode 283.Move Zeros

题目描述:Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements. 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。样例输入:[0,1,0...

2018-08-27 10:28:06 216

原创 指针值传递、地址传递和引用传递

一、指针的值传递//test.c#include <cstdio>#include <cstring>#include <cassert>void fun(char* p){ p = (char*)malloc(sizeof(char)); assert(p!=NULL); strcpy(p,"hello"); ...

2018-08-26 09:32:40 7209

原创 二维数组的探究

二维数组本质还是一维数组,数组中的每一个元素都是数组,这些元素具有相同的属性。既然是数组类型,其具备两个条件:1.数组元素的个数;2.数组元素的类型 验证二维数组本质是一维数组:void show(int* a,int n){ for(int i=0;i < n;++i){ printf("%d ",a[i]); }}int main(){ ...

2018-08-22 00:17:49 237

原创 数组指针和指针数组

一、数组指针 初学C语言的朋友对数组指针这指针数组感到迷惑,分不清,包括我自己,其实是对概念的不清晰以及对数组和指针这两个概念理解的不够深入,下面谈谈我的理解。 数组指针,是一个指针而不是数组。 这个指针具有指向整个数组的能力,保存这个数组的其实地址。 定义数组指针变量1.先定义数组类型,根据类型定义指针变量typedef int A[5];//A是数组类型。元素类型为int,元素个...

2018-08-21 20:32:50 262

原创 Debug常用命令

一、简单介绍 在windows32操作系统下可以使用debug.exe对可执行文件进行调试,可以看到底层的寄存器之间的数据传输。64位已经不支持运行16的程序,因此想要在64位下完成debug调试可执行程序,需要安装32位模拟器DosBox,详细安装步骤请百度。 二、常用命令 (1)查看寄存器中的内容 -r (2)单步执行 -t 测试代码:assume cs:codec...

2018-08-21 12:42:47 5259 2

原创 Codeup墓地 谁是你的潜在朋友

问题描述: “臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会 并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。 首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。同时,按照“臭...

2018-08-16 13:18:54 350 1

原创 Hash初步(空间换时间的策略)

问题描述: 给定N个正整数,给定M个正整数。如N = {7,8,2,4},M = {8,2},查找集合M中的正整数是否在集合N出现过。暴力枚举:#include<cstdio>int main(){ int arr[N] = {7,8,2,4}; int brr[M] = {8,2}; for(int i=0;i < N;++i){ ...

2018-08-16 00:12:50 1294

原创 全排列(permutation)

显然,对于具有n个元素的集合R,R={r1,r2,r3…rn},其排列方式有n!种。 如:R = {1,2,3},其全排列如下: 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 从上边的排列中可以看出规律,以集合中某一元素作为第一个数字,集合当中的其余数字做全排列。而其余数字组成的集合可以看作是子集合,子集合中的第一个元素作为第一个数字,子集合当中的其余数字...

2018-08-15 21:38:36 1001

原创 进制转换

P进制数转换为十进制数,采用按权展开相加。int p;//p进制int x;//p进制数字int product=1;//任何权值的0次幂均为1int y;//输出的十进制数字while(x != 0){ y = y+(x%10)*product;//(x%10)获取x的个位数字 product *= p;//获取下一位的权值 x /= 10;//去掉x的个位数...

2018-08-14 23:49:56 162

原创 二分查找的递归和非递归

二分查找的前提是数据有序,二分查找的性能十分优秀。时间复杂度为O(log2n)int binsearch(int arr[],int len,int value){ //low和high指向当前查找区间的两端,value为查找的关键字 int low=0; int high=len-1; int mid=(low+high)/2;//当前区间的中间 ...

2018-08-14 23:08:36 415

原创 使用vs2008编译器自带的命令行工具查看类的内存布局

测试代码:#include<iostream>using namespace std;class Base{protected: int _a;}; class Derive:public Base{public: int _b;};int main(){ return 0;}1.打开命令行工具 2.输入源文件路径 ...

2018-08-14 19:58:35 408

原创 随机点名程序实现

代码:test.cpp#include<ctime>#include<cstdlib>#include<string>#include<iostream>using namespace std

2018-08-14 16:34:34 3991

原创 C++ OOP思想

oop思想

2018-08-06 00:36:27 320

原创 Linux中查看进程的虚拟地址空间内存布局

要查看一个进程的虚拟地址空间的内存布局,需要设置阻塞。如果设置阻塞,当./a.out按下去后,程序执行的速度非常快以至于来不及查看,所以需要设置阻塞。#include<stdio.h>int a;static int b=10;int main(int argc,char* argv[],char* envp[]){ int a=10;//stack ch...

2018-08-05 11:43:39 7493 2

原创 c和c++的区别 (四)动态内存开辟、c/c++作用域

一、动态内存开辟 C:malloc,free C++:new,delete。new的底层调用任然是malloc,但相对于malloc,new具有初始化的功能。对于内置类型可以直接初始化,对于自定义类型,调用构造函数初始化。delete首先会进行析构,然后调用free。int main(){ 内置类型内存的动态开辟: int* p=(int*)malloc(sizeof(in...

2018-08-05 11:15:48 291

原创 c和c++的区别 (三)const&(引用)和const*(地址)在函数中的应用

int GetInt(){ int value=10; return value;//返回值通过eax寄存器带回}int main(){ int &a=GetInt();//错误 //引用初始化的值要能取地址,寄存器没有地址 修改为:const int& a=GetInt(); return 0;}//不能返回局部...

2018-08-05 00:22:58 502

原创 C/C++函数返回值问题

函数返回值问题 在C/C++中 内置类型:char short int long float double 结构体类型、联合体类型union、枚举类型enum函数返回值分为三种情况: 1.函数返回值小于等于4字节时,返回值由eax寄存器带回。int fun(int a,int b){return a+b;}int main(){ int a=10; int b=1...

2018-08-04 23:28:58 1486

原创 c和c++的区别(二)const和引用、一级指针、二级指针的结合

一、const和一级指针的结合一级指针的模型 一级指针可以有两种表达方式,p和*p。所以const与一级指针有两种结合方式。//在c++语法规则中,const修饰距离它最近的类型。int a=10;int *p=&a;int const *p;//距离const最近的类型是int,而不是int*,因为int已经是类型了//const的是*p,p本身没有被const修...

2018-08-04 09:07:20 684

原创 volatile关键字的使用

MSDN手册中对volatile关键字的解释: 大概的翻译: volatile关键字是一个类型限定符,用于声明一个对象可以通过其他语句(例如操作系统、硬件或并发执行的线程)在程序中进行修改。 volatile关键字的两个功能: (1)防止编译器对汇编指令做顺序上的优化。 (2)防止寄存器存储变量的副本值。 应用在多线程中int gdata=10;//全局变量int ...

2018-08-04 00:10:31 296

原创 C和C++中的const修饰符的全面对比

main.c/*C中的constconst修饰的变量可以不初始化const修饰的量叫常变量,不是常量绝对的常量就是一个立即数,可以作为数组的下标const修饰的常变量和普通变量的唯一区别是:常变量定义以后不能作为左值存在常变量和普通变量的编译方式一模一样同一工程下,可以引用其他文件中定义的被const修饰的全局变量a.c const int gdata = 10;//生成的符号是...

2018-08-02 00:59:47 440

原创 c++ 默认类型的转换

对于C/C++语言来说,在通常情况下语句和表达式的操作通常只使用一种类型的变量和常量。但在实际的开发中,往往会有不同类型的变量之间进行运算,为了满足这样的代码需求,通常在编译器中会设置不同类型自动类型转换,以完成相应的运算。但是如果我们对这样的自动类型转换不熟悉,往往会写出错误的代码,令人摸不清头脑,这种错误往往也是严重的。//测试代码一:#include<stdio.h>i...

2018-08-01 22:12:58 2850 2

原创 c++ typeid().name()输出变量类型

头文件:#include<typeinfo> 在上头文件中定义了typeid()操作符可以输出变量的类型。#include<iostream>#include<typeinfo>using namespace std;int main(){ bool a; char b; short c; int d; ...

2018-08-01 20:03:13 9767 5

八大排序C++代码实现

冒泡排序 选择排序 插入排序 基数排序 希尔排序 归并排序 堆排序 快速排序的C++的代码实现,可以作为模板使用,是互联网企业面试的必备技能

2020-11-14

常用的数据结构树算法代码总结

本文档总结了常用的数据结构中的树算法代码.包含常见的遍历算法(递归与非递归等),dfs,bfs的实现以及其广泛的应用

2020-01-01

LinkedListProblems.pdf

斯坦福大学整理的18个链表的相关问题,包括各类型的链表的问题。对于面试算法有很大的帮助,唯一的不足是pdf文档为全英文,需要一定的英语阅读能力。

2019-10-29

Effective C++中文第三版高清

C++经典必读书籍之一,整本书的知识点全面细致,每一个mudule都有理有据,常常会触发自己思考一些没有想过的问题。C++的功能多,实现复杂,只是学习语法只会纸上谈兵,而《Effective C++》去理解C++程序的设计原理、应用方法、陷阱可以.加深了对计算机,编程的理解和认识。

2018-08-02

空空如也

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

TA关注的人

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