11292790
ctagsctags是vim下方便代码阅读的工具。尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易地浏览源代码。(尤其是大型的工程)一、安装ctags1、命令行安装切换到root用户之下,输入yum install ctags2、下载源码安装(网上提供的方法) 1)从ht
vim对于一个经常在linux进行编程的程序员,将vim 配置的高大上是一个程序员的基本素养。接下来就来给大家介绍一下如何简单的配置vim首先来上一张效果图配置文件的位置 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。1、切换自己的登陆名
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:Which 查看可执行文件的位置。whereis 查看文件的位置。locate 配合数据库查看文件位置。Find 实际搜寻硬盘查询文件名称whichwhich命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索
template<class T> void BinaryTree<T>:: PrevOrderNoRec() { if (_root == NULL) { return; } stack<Node*> s; s.push(_root); while (!s.emp
二叉树二叉树:二叉树是一棵特殊的树,二叉树每个节点最多有两个孩子结点,分别称为左孩子和右孩子满二叉树:高度为N的满二叉树有2^N - 1个节点的二叉树。完全二叉树: 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树二叉树的存储结构数组表示存储链表存储表示: &
广义表的定义广义表是非线性的结构,是线性表的一种扩展,是有n个元素组成有限序列。广义表的定义是递归的,因为在表的描述中又得到了表,允许表中有表。例如 <1> A = () <2> B = (a,b) <3> C = (a,b,
稀疏矩阵的特点M*N矩阵,矩阵中有效值的个数远远小于无效值的个数,并且这些数据的分布没有规律。例如下面的矩阵稀疏矩阵的压缩存储压缩矩阵值存储极少数的有效数据。使用三元组来存储每一个数据,三元组数据按照矩阵中的位置,以行优先顺序依次存放。则上述矩阵的存储结构为三元组结构//三元组的定义 template<class T> struct Triple { p
题目:一个链表的每个节点,有一个指向next指针指向先一个节点,还有一个random指针指向这个链表的一个随机节点或者NULL,现在要求实现复制这个复杂的链表,返回复制后的新链表。复杂链表的结构template<class T> struct ComplexNode { public: ComplexNode(const T& data
栈的定义--Stack栈只允许在末端进行插入和删除的线性表。栈具有后进先出的特性(LIFO,Last In First Out)。问题:实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)问题分析:根据栈的特性要实现入栈和出栈是比较容易的,只需要借助系统给的stack即可。但是最难的是要满足Min(返回最小值的操作)的时间复杂度为O(1)我们先来讨
RAII资源分配即初始化,定义一个类来封装资源的分配和释放,在构造 函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放。 智能指针的引入:由于return ,throw等关键字的存在,导致顺序执行流的错乱,不断的进行跳转,使开辟的空间看似被释放,而实际上导致内存的泄露。例如以下两个例子:void Test1() { int *p1&
斐波那契数列1、写一个函数,输入n,求斐波那契数列的第n项。斐波纳挈数列的定义如下:解法一:使用递归解决long long RecurFibonacci(unsigned int n) { if (n <= 0) { return 0; } if (n == 1) {
1、春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。测试样例:[1,2,3,2,2] 5返回:2解题思路:采用阵地攻守的思想: 第一个数字作为第一个士兵,守阵地;count = 1
函数模板提供了一种机制通过它我们可以保留函数定义和函数调用的语义在一个程序位置上封装了一段代码确保在函数调用之前实参只被计算一次.函数模板提供一个种用来自动生成各种类型函数实例的算法程序员对于函数接口参数和返回类型中的全部或者部分类型进行参数化(parameterize)而函数体保持不变.函数模板使用注意事项:1、每个函数模板前边都需要添加模板声明例如:template<typename T
//结构体的定义 struct Node { Node(const DataType& d) :_next(NULL) ,_prev(NULL) ,_data(d) {} public: DataType _data; Node* _prev; Node* _next; }; //双向链表类的定义 class
1、判断两个单链表是不是相交思路分析:最简单直接的方法就是依次遍历两条链表,判断其尾节点是不是相等,相等则相交否则不相交。bool CheckCross(const List& list1, const List& list2)//list1,list2为两个对象 { Node* l1 =
1、判断一个单链表是否带环思路解析:判断一个单链表是不是带环,就看在遍历单链表的时候能不能遍历完成,如果带环的话会陷入死循环程序一直无法结束,但是这种判断方法在程序的实现是不可能的。所以转换一种思路,利用两个遍历速度不同的指针遍历,如果存在环的话,那么快指针迟早会追上慢指针。通过这个判断程序实现起来是比较简单可行的。单链表的结构体及其类的定义struct Node { public:
1、传统的实现string类的方法优点:程序简单易懂缺点:1)在实现其拷贝构造和赋值的操作时多次的调用new动态的开辟空间,因此也需要多次的通过delete来释放空间。如果处理不当还容易造成内存泄漏。2)程序的一致性比较差#include <iostream> #include <string> using namespace std
问题要求:将C语言的注释转换为c++的注释方式常见的C语言注释问题,由此可见C语言的注释比较复杂,情况也比较多,如果按照以下的情况一种一种的去处理的话逻辑太过混乱,无法真正的整理清楚,所以需要转换思路。将复杂的控制逻辑分解成有限个稳定状态,在每个状态上进处理,这就是有限状态机。有限状态机是闭环系统,可以有限的状态,处理无穷的事务。// 1.一般情况/* int i = 0; */// 2.换行问题
问题定义: 写一个函数Merge函数,该函数有两个参数,都是递增的链表,函数的功能就是合并这两个递增的链表为一个递增的链表,Merge的返回值是新的链表。新链表由前两个链表按元素递增顺序合并而成,也就是说它不会创建新的元素。比如:这里有两个链表,分别是list1: 5->10->15list2: 2->3->20Merge函数返回一个
1、删除单链表的非尾节点解题思路:按照一般的思路单链表删除节点是必须知道其前驱节点才能删除,而在本题中不知道前驱节点,所以转换思路,先将需要删除的节点跟其后继节点的数据域交换,然后再删除既可。void EraseNotTail(pLinkNode pos) { assert(pos); pLinkNode del&nb
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <string.h> typedef struct//定义学生结构体 { char&nb
memcpy函数和memmove函数的模拟实现与区别
模拟实现常用字符串函数strstr、strcmp、strcat、strlen、strcpy。
#define _CRT_SECURE_NO_WARNINGS #define m 100 typedef char DataType; typedef struct Node /*二叉链表的结构体*/ { DataType data; struct Node * LC
#include <stdio.h> #include <assert.h> #include <stdlib.h> int my_strlen(const char * str)//计算字符串的长度 { assert(str); int count = 0
#include <stdio.h> #include <stdlib.h> #include <assert.h> typedef unsigned int uint; uint DigitSum(uint n) { assert(n); if (n &
#include <stdio.h> #include <stdlib.h> #include <assert.h> double my_pow(const double number, int n) { assert(number); if (n >
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> /*函数声明*/ void Init_Arr(int arr[ ][3]); //数组初始化 void Print_Checkerboard
&运算符 一、 计算二进制中1 的个数比如: 15 0000 1111 4 个 1 要求其数字的存储方式为int int count_one_bits(un
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号