自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符串的逆置(非递归实现)

实现方法 定义两个指针,一个指向字符串起始位置,一个指向末尾。然后进行交换,每进行一次交换后,起始指针加加,末尾指针减减直到不符合p1<p2的情况。//字符串逆置void ReStr(char *str)//字符串逆置{ char *p1 = str; char *p2 = str + strlen(str) - 1; while (p1 < p2) { ...

2019-08-20 16:49:12 199

原创 字符串替换问题——“一个换多个”

问题描述将字符串中的空格替换成“% 2 0”问题分析(1)该问题最简单的解决办法是重新申请一个新的字符串数组,遍历原字符串数组。若是非空格就直接拷贝到新数组,若是空格就直接在新数组中加入“2”,“0”,“%”三个字符。最后遍历结束,将新字符串拷贝给就字符串,释放新申请的字符串的内存空间。但该方法的空间复杂度比较高,因此可能在一定的条件下不太适合。(2)在原字符串数组上进行操作,因为...

2019-08-20 16:01:00 326

原创 字符串替换问题——“一个换一个”

问题描述 函数将字符串中的字符'*'移到字符串的前部分,前面的非'*'符后移,但不能改变非'*'字符的先后顺序,函数返回串中非'*'字符的数量。(要求尽可能的占用少的时间和辅助空间)。例:原始串为au**toc**h**i*ps,处理后为*******autochips,函数返回9.解题思路1、首先最直接的办法是重新申请一个和原始串同样大小长度的空间,然后再从头遍历两...

2019-08-19 23:40:01 728

原创 滑动窗口及连续ARQ协议

一、以字节为单位的滑动窗口 假定从A收到B发来的确认报文段,窗口大小是20(字节),确认号是31(表名B期望收到的下一序号是31,而序号30为止的数据已经收到了)。根据这两个数据,A就构造出自己的发送窗口,位置如下: A的发送窗口表示:在没有收到B的确认的情况下,A可以连续吧窗口内的数据都发送出去。凡是已经发送过得数据,在...

2019-08-16 13:57:45 1830

原创 折半查找(二分查找)算法

折半查找算法也叫二分查找算法算法思想:假定有一组数据(有序),用关键字去和它中间的数字进行比较,若关键字大于中间数则在中间数的右边(后边)进行查找;若关键字小于中间数,则在中间数的左边(前边)进行查找。注意:运用二分查找算法的数组必须自身有序#include<stdio.h>int BinSearch(int *arr, int len, int key){...

2019-08-13 17:33:54 184

原创 Linux操作系统下Git用法小结

git init 初始化空的版本库 git add main.c 将main.c文件添加到暂存区 git commit 将文件添加到工作区 git commit –m ‘ ‘备注 git log查看日志文件(历史记录) git reflog 查看文件信息 git status查看工作区状态 git checkout <filename> 对工作区代码放弃修改 git r...

2019-08-13 15:38:01 101

原创 常见的排序算法之希尔排序

希尔排序又称缩小增量排序算法思想(图解)案例:有{5,9,0,23,45,78,65,4,2,1,9,8}12个数据,对其用希尔排序的方法进行排序。1. .将上图子序列综合起来可得增量为5时的排序结果: ...

2019-07-30 17:26:59 159

原创 常见的排序算法之直接插入排序算法

直接插入排序又称简单插入排序,它是基本的排序算法之一。举例分析排序思想有如下六个数字:4,9,6,5,8,7。用直接插入排序算法对其进行排序,以递增顺序为例。 1.在序列中取出9与4进行比较,4<9,因此9插在4后边 ...

2019-07-30 15:29:50 335

原创 顺序表的基本操作

相关定义线性表的顺序表是指用一组地址连续的存储单元依次存储线性表的数据元素。顺序表的特点:1)逻辑地址相邻,物理地址也相邻。 2)结构简单、支持随机访问,查找方便。顺序表的缺点:插入删除较慢。顺序表与数组的区别:数组只支持数据的存取,顺序表可以进行数据的存取、插入和删除。数据结构的定义typedef struct ...

2019-07-29 22:53:25 275

原创 Linux学习笔记之HTTP协议的请求和应答

本文以研究访问因特网上的Web服务器为例。应用层:HTTP协议(对应传输层TCP协议)TCP协议:传输控制协议HTTP协议:HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。如下图所示在因特网上访问“www.baidu.com” IP:通过DNS(地址解析协议) ...

2019-07-29 18:54:53 242

原创 计算机网络基础知识

关于对网络的理解网络的实质就是将独立自主的计算机连接起来,将网络和网络连接起来就构成了互联网,互联网产生的目的是进行资源共享和信息交互。计算机网络的体系结构 为什么要对计算机网络进行分层?多层之间相互独立。(可以把大问题分割成多个小问题利于解决和实现) 灵活性好。(各个层发生变化只要...

2019-07-28 20:27:56 84

原创 关于函数重载问题的小结

函数重载问题的实质是同名函数之间的问题。例如:以下三个函数,在C++中都是合法的可存在的,因为他们生成的函数符号是不同的。int Sum(int a, int b)//?Sum@@YAHHH@Z{ return a + b;}double Sum(int a, int b)//?Sum@@YANHH@Z { return a + b;}double ...

2019-07-24 21:21:30 196

原创 C++类中六个默认函数

C++的特征是:封装、继承、多态。封装是指把属性和实现的细节隐藏起来,通过公有的接口访问。C++中三个访问限定符:public(在任意位置都可进行访问、包括类中和类外)、protected(在本类类中和子类类中可见)、private(仅在本类类中可访问)C++的类中有有六个默认函数,它们都可由系统调动。构造函数 析构函数 拷贝构造函数 赋值运算符重载函数 取地址运算符重载函...

2019-07-24 21:20:49 94

原创 Linux学习笔记之进程间通讯

进程间通信的方式主要有:管道、信号量、消息队列、共享内存套接字等几种方式。管道(半双工通信): 通信原理:管道通信就像现实中管道的两端一样,由一个进程进行写操作,其余进程进行读操作。如果管道为空,读操作(rea...

2019-07-23 17:18:19 93

原创 Linux学习笔记之进程、线程基础知识小结

进程 我们把一个正在运行的程序称作一个进程,即进程是执行中的程序是一个动态过程。操作系统为了管理进程,通过一个结构体task_struct记录进程的信息(进程标识符、优先级、进程状态、程序计数器、程序上下文、信号、打开的文件等等),每一个进程都有一个task_struct结构体变量,称之为PCB(进程控制块)。1、进程运行状态进程在其生命周期内可以存在多个状态,主要有:就绪...

2019-07-23 15:40:52 178

原创 Linux学习笔记之库文件

库文件的实质是预先编译好的方法的集合。库文件分为静态库和动态库(共享库)两种:Linux系统静态库扩展名为: .a ;动态库扩展名为:.so windows系统静态库扩展名为: .lib;动态库扩展名为: .dll静态库: ...

2019-07-19 22:41:18 126

原创 虚拟地址内存布局

2019-07-17 21:16:28 85

原创 编译链接运行原理

一、预编译(.i文件)预编译过程完成的操作:1.删除#define并进行文本替换2.删除#if,#endif等标志3.递归展开#include4.删除注释5.添加行号和文件6.保留#pragma二、编译(.s文件)编译过程完成的功能有:1.词法分析2.语法分析(单条语句分析)3.语义分析(结合上下文分析)4.代码优化(代码的调整)5.生成汇编...

2019-07-17 21:10:52 78

原创 Linux学习笔记之 gcc/g++  makefile  gdb

gcc/g++ makefile gdbgcc/g++的区别:(1)gcc .c文件 C语言语法 .cpp文件按c++语法进行编译,默认不链接C++标准库,需要手动指定。(2)g++ .c文件 C++语法 .cpp文件 按C++语法C(面向过程)和C++(面向对象、继承、多态、模板、STL)的区别makefile (Makefile)文件->管理...

2019-07-15 22:13:02 120

原创 Linux学习笔记之基本的操作命令

1、文件系统目录结构文件类型(-普通文件,d目录文件,l链接文件,p管道文件,c,b设备文件,s套接字文件)文件权限: chomd u+x my.sh(r:4 w:2 x:1 _:0) Chomd 742 my.sh (属主 属组 其他用户)2、命令 文件:cp rm mv mkdir rmdir(删除空文件夹)...

2019-07-15 22:08:06 116

原创 atoi问题

从键盘输入字符串str,通过函数实现输出相对应的数字。例如输入“a12345n”,则输出对应的十进制数字12345。其中要求若是输出数字大于最大整型数字则输出最大整型数字,若小于最小整型数字则输出最小整型数字。 该程序实现的主要思想是:1、首先判断输入字符串是否为有效数字字符,此处可运用C++中的函数isdigit()进行判断。 ...

2019-07-15 00:01:08 294

原创 动态内存中free

free崩溃的原因1、越界;2、指针移动找不到头;3、重复释放内存;4、释放了不是动态创建的内存;/*//free崩溃的第四个原因:释放不是动态创建的内存int main(){ int a = 10; free(&amp;a); return 0;}*//*free崩溃的第三个原因:重复释放内存int main(){ int *p = (int *)...

2018-07-25 22:15:58 238

原创 动态创建内存

malloc 、calloc和realloc的用法1、malloc是动态内存最基本的用法一般形式为:int *p=(int*)malloc(n*sizeof(int));2、realloc是扩大申请的内存int *p=(int*)realloc(p,n*sizeof(int));其中n 为申请的内存新的大小//reallocint main(){ int *p...

2018-07-25 22:12:23 225

原创 sizeof和strlen

有如下代码:#include&lt;stdio.h&gt;#include&lt;string.h&gt;int main(){ char str1[100]="abcde"; char str2[]="abcde"; char*str3="abcde"; char str4[100]="abcde\0ijk\n"; char str5[]="abcde\0ijk\

2018-07-18 23:23:16 138

空空如也

空空如也

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

TA关注的人

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