自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++:类和对象

1.概念:根据下图我们可以直观的了解类和对象类:对现实生活中事物的描述对象:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。注:ADT为抽象数据类型 2.创建:[修饰符] class类名{private:    成员变量;public:    成员方法}C++三大特征:封装...

2018-11-27 19:25:34 272

原创 C++:new/delete、namespace

一、new/delete(动态开辟/释放)          在C语言中我们使用malloc动态开辟,free释放          在C++中我们使用关键字 "new"动态开辟,delete释放1.定义:动态开辟:new  + 类型                  变量:int *p=new int(10);   //  (值)                     ...

2018-11-23 20:57:11 169

原创 C++:引用、const

一、const        我们都知道const 修饰符修饰一个变量,使用const修饰之后,这个变量相当于常量了,它的值在代码其他部分不能再修改,这对于函数调用时候,防止错误的修改原本不应修改的变量起到很大作用。在C语言中,const修饰常变量:在编译阶段常变量没有左值,其他和普通变量处理相同。在C++中,const修饰的是常量:在编译阶段把用到常量的地方替换成常量初始值。使用...

2018-11-23 20:40:26 167

原创 C++:函数的重载、inline函数、C/C++相互调用

一、重载(overloading) :函数名字相同,而参数不同。返回类型可以相同也可以不同。     若有题目为:实现两个数相加,一般我们都会想到如下代码:int Sum(int a,int b){ return a+b;}但事实我们考虑并不全面,因为并没有给出要求是实现两个整型数相加,我们还需要考虑double、float等等其他类型,需要全面考虑,但之前在c语言中不允...

2018-11-23 19:00:37 445

原创 Linux:信号的底层实现机制

1.信号:系统先定义好的某些特定的事件,可以被发生,也可以被接受。发生和接受的主体都是进程。2.信号机制:系统预先定义好的一些事件3.进程对信号的响应方式:当进程发生时,用户可以要求进程以以下三种方式之一对信号做出响应:               a.默认信号(SIG_DFL):按系统默认方式处理,大部分信号的默认操作是终止操作,且所有的实时信号的默认动作都是终止进程。   ...

2018-11-14 21:33:54 5497 2

原创 Linux:僵死进程

僵死进程的产生:     1.当父进程未结束,子进程结束,并且父进程未获取子进程的退出状态。子进程被称为僵死进程。     2.进程执行结束,进程主体(执行代码、数据、资源)都释放,而其PCB 并未释放。     3.孤儿进程:父进程死后僵死进程成为“孤儿进程”,由init接管       #include<stdio.h>#include<stdlib....

2018-11-14 21:13:51 164

原创 Linux:父子进程关系研究、fork函数

1.创建子进程(系统调用函数):pid_t   fork(void)注:引用#include<unistd.h>头文件若创建失败返回-1,成功则fork函数调用一次返回两次,即在原来进程(父进程)中返回新进程(子进程)的pid,且子进程pid绝对不为0,在新进程中返回0。 #include<stdio.h>#include<stdlib.h>...

2018-11-14 20:43:29 587

原创 Linux:文件操作、用户态切内核态

1.Linux下文件操作函数: 系统调用函数:open   read  write  close   lseek   stat库函数:fopen   fread  fwrite  fclose   flseek FILE *fopen(char *file,char *flag);          int open(char *file,int flag,/*int m...

2018-11-13 21:54:26 384

原创 Linux:静态库、共享库、工程管理工具

1.静态库:在编译连接时,将库内容直接合并到最终的可执行文件中(相当于中间文件.o的集合) Windows下:.libLinux下:.a,即不可执行的普通文件链接:gcc -o main main.c -L. -lstatic运行./main2.共享库(动态库):在连接阶段仅仅是将使用哪个共享库设置到最终的可执行文件中,在程序运行时,才会单独加载动态库 Windows下:...

2018-11-13 21:39:34 209

原创 Linux:进程、进程状态、进程管理、进程加载

一.进程:即运行中的程序,操作系统为了唯一标识一个进程,会给进程分配一个ID,即PID   程序:存储在磁盘上可执行的二进制文件(ELF格式) 1.查看进程状态:/proc/PID/status2.进程命令:         查看进程:ps                        ps      -e   :显示系统所有的进程                   ...

2018-11-13 21:10:33 332

原创 C++:调用约定、返回值的返回方式、函数的默认值

一、调用约定注:Sum表示函数名,红色字母表示调用约定,第一个H表示函数返回值类型为int,第二三个H表示形参类型为int1.__cdcal:c标准调用约定    //?Sum@@YAHHH@Z                  __cdecl由调用方进行形参开辟栈区,参数从右至左入栈,然后由调用者清理栈区。2.__stdcall:windows调用约定    //?Sum@@GZ...

2018-11-13 20:54:29 709

原创 C++:函数的堆栈调用过程

一、函数的堆栈调用 以简单求和代码为例具体分析:#include<iostream>int Sum(int a ,int b){ int tmp=0; tmp=a+b; return tmp;}int main(){ int a=10; int b=20; rt=Sum(a,b); return 0;...

2018-11-13 20:49:06 566

原创 C++:虚拟地址空间、编译链接过程

1.虚拟地址空间:        在Linux下的虚拟地址空间中,用户空间、内核空间以3:1划分,即3G大小的用户空间和1G大小的内核空间,具体各区域划分如图:小补充:思考全局变量与局部变量各自存储在什么段?#include<iostream>int gdata1=10;//.dataint gdata2=0;//.bssint gdata3;//.bss...

2018-11-13 19:13:13 455

原创 Linux操作系统:基础操作(2)

四、进程管理命令.rw-rw-r--.    1          stu   stu   731         Jul  19 18:18        main.c文件类型  权限       属主  组    文件大小 最后修改时间      文件名rw-    rw-  r--:   r:读属主 组   其他    w:写                       ...

2018-11-07 21:27:51 204

原创 Linux操作系统:基本操作(1)

谨记:Linux上一切皆文件 一、Linux文件存储层次结构:(树状)                                                     /bin:命令对应的可执行文件/etc:配置目录 配置文件/proc:/mnt:临时挂载点/usr:第三方软件所使用的资源/home:普通用户的家目录,每个用户都会在/home下有...

2018-11-07 21:25:31 204

原创 数据结构习题(2):单链表

1.寻找单链表倒数第K个节点。Node* find_k(PLink phead, int k){ Node* pfast = phead->pnext; Node* pslow = pfast; for (int i = 0; i < k - 1; ++i) { pfast = pfast->pnext; } while (pfast->pnext...

2018-11-07 20:38:16 298

原创 数据结构习题(1):单链表

(部分基于之前的代码) 1.设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。int InsertSort(PDSeqList pl,ELEM_TYPE val){ if(pl == NULL) { return false; } int index = 0; for(int i = 0; i < pl->cur...

2018-11-07 20:34:56 888

原创 数据结构:归并排序、基数排序

1.归并排序:是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 例:设有数列{6,202,100,301,38,8,1}初始状态:6,202,100,301,38,8,1第一次归并后...

2018-11-07 13:26:09 318

原创 数据结构:交换排序(冒泡排序、快速排序)

1.冒泡排序,它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该...

2018-11-06 22:04:40 264

原创 数据结构:选择排序(简单选择排序、堆排序)

1.简单选择排序:指一种排序算法,在简单选择排序过程中,所需移动记录的次数比较少。最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。方法是设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。 2.堆排序:是指利用堆这种数据结构所设计的一...

2018-11-06 21:56:23 399

原创 数据结构:插入排序(直接插入、希尔排序)

       1.直接插入排序 :是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。      基本思想:直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外层循环是从第二个数值开始的。当前一数值比待比较数值大的情况下继续循...

2018-11-06 21:49:06 259

原创 数据结构:BF算法、KMP算法

       BF算法,即暴风(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。该算法最坏情况下要进行M*(N-M+1)次比较,时间复杂度为O(M*N)。...

2018-11-06 21:38:12 474

原创 数据结构:串

1、串的概念       字符串简称串,是一种特殊的线性表,它的数据元素仅由一个字符组成。2、串的定义       串(String)是由零个或多个字符组成的有限序列,又称字符串。       其中s是串名,用双引号括起来的字符序列为串值,但引号本身并不属于串的内容。ai(1<=i<=n)是一个任意字符,它称为串的元素,是构成串的基本单位,i是它在整个串中的序号;n为串的长...

2018-11-06 21:28:26 475

原创 数据结构:循环队列

        为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列    (图来自网络)本篇   rear表示队尾位置的下一个位置;          front表示当前队头的元素位置;循环队列函数实现:1.初始化2.判满3.入队4.判空5.出队6.清队 #in...

2018-11-06 21:18:19 145

原创 数据结构:链队

         队列是一种特殊的线性表,特殊之处在于它只允许在表的前端进行删除操作,而在表的后端进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。        队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素成为出队。因为队列只允许在一段插入,在另一端删除,所以只有...

2018-11-06 21:11:40 386

原创 数据结构:栈、链栈

              栈的插入和删除只在栈顶进行操作,在单链表中,头指针是单链表的必须元素;而在栈中,栈顶指针也是链栈的必须元素,且一般将栈顶放在单链表的头部。         线性表有顺序存储结构和链式存储结构,栈属于线性表的一种,也具有顺序存储结构和链式存储结构。对于栈的链式存储结构,一般称之为链栈。栈的特点:先进后出栈函数实现:1.初始化2.判满3.压栈...

2018-11-06 21:03:13 360

原创 数据结构:单链表基础操作

函数实现:1.初始化2.尾插3.头插4.按关键字删除5.查找 自定义头文件:typedef int ELEM_TYPE;typedef struct Node{ ELEM_TYPE mdata; struct Node* pnext;}Node, *Link;void Init(Link phead);static Link BuyNode()...

2018-11-06 20:26:01 156

原创 数据结构:顺序表基础操作

       线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素,使得线性表在逻辑结构上相邻的元素存储在连续的物理存储单元中,即:通过数据元素物理存储的连续性来反应元素之间逻辑上的相邻关系。采用顺序存储结构存储的线性表通常简称为顺序表。       顺序存储的线性表的特点: 1.线性表的逻辑顺序与物理顺序一致; 2. 数据元素之间的关系是以元素在计算机内“物理位置相邻”来...

2018-11-06 20:21:16 169

空空如也

空空如也

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

TA关注的人

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