stack的模拟实现 Stack的模拟实现栈的特性:后进先出接口一般有:push(); pop();size();empty();top();#pragma once#include <assert.h>//const size_t N = 10;//#define NUM 20template<class T>class Stack{public: Stack()
布隆过滤器 11、布隆过滤器–>(时间复杂度为: O(1) )存在误判(不同的字符串可能转化为相同的整形)–>可以应用于任何数据类型(位图的扩展)实现布隆过滤器需要位图和哈希函数 布隆过滤器:1、数据存在(不一定准确)-->可能因为冲突导致(可通过把地址存入磁盘解决)2、数据不存在(一定准确)布隆过滤器的目的是为了节约空间,所以确定站位个数也不能过多,但当位数少时冲突率就会增高(悖论)布隆过滤器可以设
软连接 与 硬链接 1>首先什么是链接? 链接操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的 访问权限 ,以控制对信息的共享和安全性的问题。 如果链接指向目录,用户就可以利用该链接直接进入被链接的目录而不用打一大堆的路径名。而且,即使我们删除这个链接,也不会破坏原来的目录。2>硬链接 硬链接只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引
单例模式之 --饿汉模式与懒汉模式 一、饿汉模式与懒汉模式http://mp.weixin.qq.com/s?__biz=MjM5MjI2MzkyNw==&mid=2652124208&idx=1&sn=3cd17cb1b3b6ad03d933b7625c8a7e8d&chksm=bd486fa88a3fe6be014711cd9cf28f1868f5db17047398df24b83801e9753c33af8f352f7980&m
位图的简单实现(bitMap) 一、位图的基本概念位图法(bitmap) 作用: 判断某个数据存在不存在 适用范围:大规模数据,数据状态又不多 什么是位图: http://baike.sogou.com/v72576997.htm?fromTitle=位图法所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。 例如,
memcopy与memmove的区别 Memcopy和memmove函数在linux下看了一下两个函数的源码。 两个函数都在头文件string.h中定义,函数原型为:void * __cdecl memcpy ( void * dst,const void * src,size_t count);void * __cdecl memmove ( void * dst,const void * src,size_t count);实现代
日常笔记整理 1、#pragma的作用是什么:设置编译器的2、p++ 是先自增p(++p),在进行解引用,他等价于 (p++) :因为后缀++和–操作符的优先级比前缀一目操作的优先级高, 若要自增p所指向的值:(*p)++;如果副作用的顺序无关紧要,也可以使用++*p;3、int**a[3][4] 该式表示的是指向指针的指针数组,每个元素存放的是二级指针,每个指针在32位执行系统下占4个字节的内
静态变量与全局变量的区别 全局变量与静态变量static 声明的变量在C语言中有两方面的特征:1.变量被放在程序的全局存储区中,这样在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。2.变量用static告知编译器,自己仅在变量的作用范围内可见。这一点是它与全局变量的区别。 Tips:A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;B.若全局变量仅由单
Linux文件与目录的三种时间状态(mtime,atime,ctime)区别 mtime(modify time):最后一次修改文件或目录的时间ctime(change time) :最后一次改变文件或目录(改变的是原数据即:属性)的时间 如:记录该文件的inode节点被修改的时间。touch命令除了-d和-t选项外都会改变该时间。而且chmod,chown等命令也能改变该值。atime(access time)::最后一次访问文件或目录的时间 对于文件: 当修改m
字符串替换 eg: str1="123%s456%s" str2={'a','b','c','d'}(将str1中的%s替换成str2中的字符)替换结果返回为:123a456bcd //字符串替换 //eg: str1=”123%s456%s” str2={‘a’,’b’,’c’,’d’}(将str1中的%s替换成str2中的字符)替换结果返回为:123a456bcd代码块#pragma once#include<iostream>using namespace std;#include<assert.h>#include<string>void ReplaceC
将N个字符的数组,循环右移K位。时间复杂度O(N)。 将N个字符的数组,循环右移K位。时间复杂度O(N) eg:str[]=”abcde123”,右移3位 1、旋转abcde->edcba 2、旋转123->321 3、整体旋转edcba321->123abcde代码块实现void Reverse(char* str, int left,int right){ while (left < right) {
由前序遍历和中序遍历重构二叉树 由前序遍历和中序遍历重建二叉树前序序列(根-左-右):1 2 3 4 5 6中序序列(左-根-右):3 2 4 1 6 51、由前序遍历可知根节点为第一个元素1,在中序遍历序列中找到1对应位置,则1的左边就是左子树3 2 4,右边就是右子树6 5; 2、在找到前序遍历序列中从第二个位置开始往后找相同数目的节点为左子树2 3 4,剩余的就是右子树序列6 5; 3、根据前序遍历规则可知,左子树序
C语言中位操作用法 一、前言在对单处机进行编程的过程中,对位的操作是经常遇到的。C51对位的操控能力是非常强大的。从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点。这也是在各个领域中都可以看到C的重要原因。在这一节中将详细讲解C51中的位操作及其应用。二、位运算符C提供了几种位操作符,如下表所示:三、位操作运算 1.“按位与”运算符(&) 参加运算的两个数据,按二进位进行“与”运算。
让C程序更有效的十种方法 任何代码的美丽不仅在于找到一个给定的问题的解决方案,但在它的简单性,有效性,紧凑性和效率(内存)。设计的代码比实际执行更难 。因此,每一个程序员当用C语言开发时,都应该保持这些基本的东西在头脑中。本文向你介绍规范你的C代码的10种方法。1.避免不必要的函数调用考虑下面的2个函数:void str_print( char *str ) { int i; for ( i =
C语言测试题注意事项 int x=35; char str[10]; //问:strlen(str)和sizeof(str)的值分别是多少? // strlen(str) 值不确定,strlen根据’/0’确定字符串是否结束。 // sizeof(str)=10 sizeof一个数组为数组长度 strcpy(str,”www.it315.org”/共13个字母/); //问:此时x和strlen(str)
BSS段、数据段、代码段、堆与栈 BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment/text segment)通常是指用来存放程序
C语言中使用静态函数的好处 静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。C语言中static
元素出栈、入栈顺序的合法性 元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。这道题目考察的就是栈的先进后出(FILO),当第一个值压入栈后,它就会比它后压入的值晚出栈,好比1.2.3.4.5是入栈序列,4.5.3.2.1是出栈序列,为什么说他是正确的呢?因为当4出栈时,栈内已经压入1.2.3
正则表达式 一、正则表达式-教程正则表达式(Regular Expression)是一种文本模式,包括普通字符(eg:a/A-z/Z,0-9)和特殊字符(称为“元字符”) 1. 正则表达式使用单个字符串来描述、匹配一系列某个句法规则的字符串。 2. 正则表达式是繁琐的,但是是他又很强大,学会之后很大程度上提高了你的效率。 3. 许多程序的设计都支持正则表达式(eg:C语言 ,C++,HTML等等)实例二、
Linux中shell文件操作大全 1.创建文件夹#!/bin/shmkdir -m 777 "%%1"2.创建文件#!/bin/shtouch "%%1"3.删除文件#!/bin/shrm -if "%%1"4.删除文件夹#!/bin/shrm -rf "%%1"5.删除一个目录下所有的文件夹#!/bin/bashdirec="%%1" #$(pwd)fo