自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 常见的排序算法

1.冒泡排序基本思想:相邻位置元素两两比较,顺序相反则进行交换,每一轮会将最小或最大的元素"浮"到顶端,最终达到完全有序。void BubbleSort(int *elem, int first, int last){ bool is_swap = false; for (int i = first; i<last - 1; ++i) { for (int j = first; j<last - i - 1; ++j) { if (elem[j] > elem[

2020-05-23 20:03:45 119

原创 C++ 11

列表初始化在C++98中,标准允许使用花括号{}对数组元素进行统一的列表初始值设定。对于一些自定义的类型,却无法使用这样的初始化。C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和用户自定义的类型,使用初始化列表时,可添加等号(=),也可不添加。int main(){ // 内置类型变量 int x1 = {10}; int x2{10}; int x3 = 1+2; int x4 = {1+2}; int x5{1+2}; // 数组 int ar

2020-07-21 15:03:58 241

原创 Linux: 进程间通信

管道创建管道,就会给我们返回文件描述符

2020-07-19 19:27:49 167

原创 哈希

哈希概念理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。当向该结构中:插入元素根据待插入元素的关键码,以此函数计算出该元素的存储位置并按此位置进行存放搜索元素对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若关键码相等,则搜索成功该方式即为哈希(散列)方法,哈希方法中使用的转换

2020-07-10 16:07:11 133

原创 Linux:信号

信号的基本介绍每个信号都有一个名字。这些名字都以三个字符 S I G开头。很多条件可以产生一个信号当用户按某些终端键时,产生信号。硬件异常产生信号:除数为0、无效的存储访问等等。kill -l 看系统的信号响应信号默认、忽略、SIGKILL SIGSTOP不能忽略捕获并处理 SIGKILL SIGSTOP不能捕获并处理信号处理函数typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandl.

2020-07-08 17:29:48 120

原创 C++错题集

day01以下程序的运行结果是(B)A computer , puterB computer , comC computer , computerD computer , compu.terint main(void){ printf("%s , %5.3s\n","computer","computer"); return 0;}int *p[4] 与选择项中的 说明 (C) 等价A int p[4]B int *pC int *(p[4])D int (*p)[4]

2020-07-06 16:18:11 619 1

原创 C++:set map

键值对用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值,value表示与key对应的信息。SGI-STL中关于键值对的定义:template <class T1, class T2>struct pair{typedef T1 first_type;typedef T2 second_type;T1 first;T2 second;pair(): first(T1()), second(T2()){}pair(const

2020-07-05 19:49:00 90

原创 C++:RB-tree

红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。红黑树的性质每个结点不是红色就是黑色根节点是黑色的如果一个节点是红色的,则它的两个孩子结点是黑色的对于每个结点,从该结点到其所有后代叶结点的简单路径上,均 包含相同数目的黑色结点每个叶子结点都是黑色的(此处的叶子结点指的是空结点)红黑树的插入操作按照二叉搜索的树规则插入新节

2020-07-02 17:34:04 242

原创 C++:AVL树

AVL tree 是一个“加上了额外平衡条件”的二叉搜索树,其平衡条件的建立是为了保证整棵树的深度为O(logN)。一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树:它的左右子树都是AVL树左右子树高度之差(简称平衡因子)的绝对值不超过1(-1/0/1)AVL树节点的定义template<class T>struct AVLTreeNode{ AVLTreeNode(const T& data) : _pLeft(nullptr), _pRight(nullp

2020-07-01 16:52:25 119

原创 C++:二叉搜索树

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树二叉搜索树操作二叉搜索树的查找二叉搜索树的插入树为空,则直接插入树不空,按二叉搜索树性质查找插入位置,插入新节点二叉搜索树的删除情况b:删除该结点且使被删除节点的双亲结点指向被删除节点的左孩子结点情况c:删除该结点且使被删除节点的双亲结点指向被删除结

2020-06-30 16:38:19 89

原创 Linux:I/O

文件操作open()用来打开和创建 一个 文件或设备,返回值为文件描述符int open(const char *pathname, int flags);参数 flags : O_RDONLY, O_WRONLY 或 O_RDWRint open(const char *pathname, int flags, mode_t mode);参数 flags :O_CREAT、O_TRUNCclose()关闭一个文件描述符int close(int fd);read()read(

2020-06-28 18:55:08 87

原创 C++:多态

多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。那么在继承中要构成多态还有两个条件:必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数虚函数:即被virtual修饰的类成员函数称为虚函数。class Person {public: virtual void BuyTicket() { cout << "买票-全价"

2020-06-23 10:35:40 85

原创 C++:继承

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。继承定义继承方式:public 继承、 protected继承、 private继承。下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。class Person{public: vo

2020-06-20 20:36:43 77

原创 C++:stack和queue

stackstack的介绍stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:标准容器vector、deque、list均符合这些需求

2020-06-16 16:09:13 906

原创 C++:list

listlist是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list的构造list():构造空的listlist (size_type n, const value_type& val = value_type()):构造的list中包含n个值为val的元素list (const list& x):拷贝构造函数list (Inp

2020-06-15 08:17:43 80

原创 C++:vector

vectorvector是表示可变大小数组的序列容器,像数组一样采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。常用构造函数vector():无参构造vector(size_type n, const value_type& val = value_type()):构造并初始化n个valvector (const vector& x);:拷贝构造vector (InputIterator first, InputIterato

2020-06-14 18:02:55 91

原创 Linux:进程

冯诺依曼程序和数据都以二进制存储在存储器中,存放在存储器的位置由存储器指定。计算机工作的时候能够自动从存储器中取出指令然后执行。程序和进程进程是操作系统分配时间片、内存等资源的基本单位(最小单位),每个进程都有自己的状态、有独立的地址空间。...

2020-06-12 17:08:36 113

原创 Linux:模拟实现shell

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/wait.h>void do_action(int argc, char *argv[]){ pid_t pid = fork(); if (pid == 0){ //子进程,用argv[0]程序替换 ex

2020-06-11 22:35:03 253

原创 模板类string

string 类的常用构造函数string():构造空的string类对象,即空字符串string(const char* s):用C-string来构造string类对象string(size_t n, char c):string类对象中包含n个字符cstring(const string&s):拷贝构造函数int main(){ string s1; // 构造空的string类对象s1 string s2("hello bit"); // 用C格式字符串构造string类

2020-06-10 19:12:43 352

原创 C++:模板

函数模板●函数模板格式template<typename T1, typename T2,......,typename Tn>返回值类型 函数名(参数列表){}●函数模板的实例化1.隐式实例化:让编译器根据实参推演模板参数的实际类型template <typename Type>Type Max(Type a, Type b){ return a > b ? a : b;}int main(){ int res = Max(10, 20); i

2020-06-08 14:42:07 79

原创 C++:new与delete

C/C++内存分布new与delete1.申请和释放单个元素的空间,使用new和delete操作符,申请和释放连续的空间,使用new[]和delete[]。2.在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数。class Test{public: Test(int a = 0) : m_a(a) {} ~Test() {}private: int m_a;};int main(){ int *p = new int;// 动态申请一个int类型的空

2020-06-02 13:39:04 86

原创 C++:友元

友元函数友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。class Time{ friend std::ostream & operator<<(std::ostream & os, const Time & t);//声明为友元函数private: int hours; int minutes;public: Time(); Time(int h, int m = 0)

2020-05-31 17:51:06 226

原创 C++:类的构造函数 析构函数 赋值函数

构造函数析构函数运算符重载

2020-05-29 15:28:51 247 1

原创 C++:初识类

类的定义class className{ // 类体:由成员函数和成员变量组成}; // 一定要注意后面的分号[注]:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。class Person{public: //公有成员,在类外可以直接被访问 void PrintPersonInfo(); private: //私有成员,在类外不能直接被访问 char m_name[20]; int m_age;

2020-05-27 13:06:37 125

原创 C++笔记:函数重载 引用 名称空间

1.引用1.引用在定义时必须初始化2.一个变量可以有多个引用3.引用一旦引用一个实体,再不能引用其他实体int a = 10;int &ra = a;cout << "a = " << a <<endl; // a = 10cout << "ra = " << ra << endl; //ra = 202.函数2.1函数重载函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数

2020-05-25 09:50:11 87

原创 Linux随笔:Makefile

gcc选项-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面-S 编译到汇编语言不进行汇编和链接-c 编译到目标代码-o 文件输出到 文件-static 此选项对生成的文件采用静态链接-g 生成调试信息。GNU 调试器可利用该信息。-w 不生成任何警告信息。-Wall 生成所有警告信息。示例预处理(进行宏替换)gcc –E hello.c –o hello.i编译(生成汇编)gcc –S hello.i –o hello.s汇编(生成机器可识别代码)gc

2020-05-24 17:15:41 113

原创 堆:优先级序列

堆如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。性质1、堆中某个节点的值总是不大于或不小于其父节点的值;2、堆总是一棵完全二叉树堆的实现及堆排序在这里插入代码片

2020-05-16 17:33:42 272

原创 二叉树

二叉链表二叉树的遍历

2020-05-12 16:17:14 109

原创 队列:顺序队列 循环队列 链队列

队列:顺序队列 循环队列 链队列用C语言分别实现顺序队列、循环队列、链队列,并完成入队、出队、获取对头元素等……queue.h在这里插入代码片

2020-05-09 17:04:00 169

原创 栈:顺序栈 链栈

栈:顺序栈 链栈分别用顺序表和链表实现栈,完成入栈、出栈、窥探栈顶元素等操作……stack.h#ifndef _STACK_H_#define _STACK_H_#include"common.h"/////////////////////////////////////////////////////////////////顺序栈//顺序栈的扩容交由同学们自行完成#de...

2020-05-08 16:02:04 121

原创 双链表

双链表用C语言实现双向循环链表,并完成头插、尾插、头删、尾删、查找、打印、排序、逆序、按值插入等……testMain.c/*双链表*/#include"list.h"int main(){ DCList mylist; DCListInit(&mylist); DCListNode *p; ElemType item, key; int select = 1;...

2020-05-02 13:00:21 76

原创 单链表

单链表用C语言实现单链表,完成头插、尾插、头删、尾删、排序、查找、清空等操作…

2020-05-01 12:29:52 68

原创 Linux:权限

2020-04-29 18:20:37 108

原创 通讯录管理系统

编写通讯录管理系统,采用顺序表结构存联系人数据,可以完成联系人的增、删、查、改、排序等操作。联系人数据可写入文件并且能够从文件中加载,并且能够动态开辟空间。contactMain.c#include"Contact.h"void Menu(){ printf("*********************通讯录*******************\n"); printf("* ...

2020-04-28 17:27:45 417

原创 顺序表

顺序表完成顺序表的初始化、增、删、查、扩容等操作test.c#include "seqlist.h"int main(){ SeqList mylist; SeqListInIt(&mylist); //printf("SeqList capacity = %d\n", SeqListCapacity(&mylist)); //_Inc(&mylist...

2020-04-27 17:01:40 85

原创 Linux:vim文本编辑器

2020-04-24 14:06:49 69

原创 Linux常用命令

Linux常用命令目录操作目录操作查看文件内容

2020-04-23 17:18:55 89

原创 C语言:#define 宏

预处理符号:FILE 、LINE、DATE、TIME.int main(){ printf("file = %s\n", __FILE__);//__FILE__ 进行编译的源文件 printf("line = %d\n", __LINE__);//__LINE__ 文件当前的行号 printf("date = %s\n", __DATE__);//__DATE__ 文件被编...

2020-04-23 14:54:00 171

原创 C语言:文件读写

文件读写fopen():打开文件FILE * pFile;//文件指针变量pFile = fopen("myfile.txt", "w");fclose():关闭文件fclose(pFile);文件结束判定在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。而是应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束。1.文本文件读取是否结束,判断...

2020-04-22 15:22:20 124

原创 C语言:动态内存管理

动态内存函数介绍malloc()void* malloc (size_t size);这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。free()void free (voi...

2020-04-20 21:33:58 95

空空如也

空空如也

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

TA关注的人

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