自定义博客皮肤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)
  • 收藏
  • 关注

原创 直接插入排序、折半插入排序、希尔排序

#includeusing namespace std;//升序//直接插入排序(稳定)void InsertSort(int arr[],int left,int right){ for(int i=left+1;i<=right;i++) { if(arr[i]<arr[i-1]) { int temp=arr[i]; int j=i-1; do

2016-10-10 12:16:32 368

原创 合并文件A,B,将合并后信息(按字母顺序排列)写入到文件C中

#include using namespace std;#define MAX 100void test(){ FILE* fp; //声明fp是指针 char c[MAX]; char ch; int i=0; //处理A文件 if((fp=fopen("A","r"))==NULL) { cout<<"A文件打不开"<<endl; exit(0);

2016-10-10 10:57:28 2127

原创 二叉树中两个节点的最近公共祖先节点

#include using namespace std;templatestruct BinaryTreeNode{ BinaryTreeNode(const T& data) :_data( data) ,_left( NUL

2016-08-06 23:27:58 448

原创 C基础(46——50)

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/85/69/wKiom1eiuNjC6KvmAADEogSgW4M834.png" title="Image.png" alt="wKiom1eiuNjC6KvmAADEogSgW4M834.png" />#include #include #include #include 

2016-08-06 10:27:22 272

原创 C基础(41——45)

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/85/5B/wKioL1ehYzaiDZp2AACb9eiFOxo559.png" title="Image.png" alt="wKioL1ehYzaiDZp2AACb9eiFOxo559.png" />#include #include #include char* St

2016-08-03 14:00:30 342

原创 C基础(36——40)

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/85/4E/wKiom1efdyfQ0969AAC0Kuc0oC4993.png" title="Image.png" alt="wKiom1efdyfQ0969AAC0Kuc0oC4993.png" />//两个指针#include #include char* Rever

2016-08-03 14:00:27 372

原创 C基础(31——35)

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/85/36/wKiom1ecxprhN9GLAACit6UEtsQ485.png" title="Image.png" alt="wKiom1ecxprhN9GLAACit6UEtsQ485.png" />大端:数据的高位字节存放在地址的低端,低位字节存放在地址的高端小端:数据的高位

2016-08-03 14:00:23 221

原创 C基础(26——30)

650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/85/31/wKioL1ecY1vSj4iSAAApgPi_vqs982.png" title="Image.png" alt="wKioL1ecY1vSj4iSAAApgPi_vqs982.png" />如果n越大,则递归计算比较慢//#include //#include 

2016-07-30 16:35:18 194

原创 C基础(21——25)

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/85/01/wKioL1eZn4Wg5SgcAAAjWAeUY7o992.png" title="Image.png" alt="wKioL1eZn4Wg5SgcAAAjWAeUY7o992.png" />650) this.width=650;" src="http://s3.51

2016-07-30 16:35:16 241

原创 RBTree红黑树

对平衡的要求低二叉搜索树性质:1.每个节点不是红的就是黑的2.根节点是黑的3.若一个节点是红的,则它的两个子节点是黑的(即不能出现两个连续的红的)4.每条路径的黑节点的数量相等5.每个叶子节点都是黑的(叶子节点:NIL节点,空节点)最长路径不超过最短路径的两倍650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/84/E2/wKiom1

2016-07-30 16:35:13 210

原创 C基础(16——20)

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/84/7E/wKiom1eR9cjgkiq9AABvHRRo1T4763.png" title="Image.png" alt="wKiom1eR9cjgkiq9AABvHRRo1T4763.png" />#include #include void test(){    

2016-07-22 18:40:59 199

原创 C基础(11——15)

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/84/75/wKioL1eQ42HDeQ1vAABzSkpuu54488.png" title="Image.png" alt="wKioL1eQ42HDeQ1vAABzSkpuu54488.png" />#include #include void test(){    

2016-07-22 18:40:56 241

原创 Linux之进程终止

Linux中进程退出分为正常退出和异常退出1.正常退出(1)在main()函数中执行return(2)调用exit()函数(3)调用_exit()函数2.异常退出(1)调用about()函数(2)进程收到某个信号,而该信号使进程终止对比(1)exit与returnexit:一个函数,有参数。exit执行完后把控制权交给系统return:函数执行完后的返回。return执行完后把控制权交给调用函数(

2016-07-21 10:44:32 664

原创 Linux之fork与vfork区别

创建一个新进程的方法只有由某个已存在的进程调用fork()或vfork()650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/84/64/wKiom1ePL3ez9NYFAAAHVJ_16P4891.png" title="Image.png" alt="wKiom1ePL3ez9NYFAAAHVJ_16P4891.png" />1.

2016-07-21 10:44:29 376

原创 linux下进度条的简单实现

p_b.c650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/84/5C/wKioL1eOI3fCljkxAACQNFsWySQ424.png" title="Image.png" alt="wKioL1eOI3fCljkxAACQNFsWySQ424.png" />Makefile650) this.width=650;" src=

2016-07-20 10:18:34 183

原创 Linux之strace简单用法

Linux下,进程不能直接访问硬件设备。当进程需要访问硬件设备时(读取磁盘文件、接收网络数据等),则必须由用户态切换为内核态,然后通过系统调用来访问硬件设备。strace是跟踪进程执行时的系统调用和所接收的信号(即它跟踪到一个进程产生的系统调用,包括参数、返回值、执行消耗的时间)。strace最简单的用法是执行一个指定的命令(过程中,starce会记录和解析命令进程的所有系统调用及这个进程的所有的

2016-07-18 13:34:58 6854 2

原创 实现几个shell小脚本

实现进度条my_pb.sh650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/83/18/wKiom1dqlG6gHCYgAAA-1PyY3TI655.png" title="Image.png" alt="wKiom1dqlG6gHCYgAAA-1PyY3TI655.png" />运行结果650) this.width=650;"

2016-06-25 11:14:07 295

原创 Linux下字符串的截取

第一种方法:利用键盘上#$%三个键之间的前后关系${varible##*string}  从左向右截取最后一个string后的字符串${varible#*string}  从左向右截取第一个string后的字符串${varible%%string*}  从右向左截取最后一个string后的字符串${varible%string*}  从右向左截取第一个string后的字符串eg:650) this

2016-06-22 13:38:37 4496

原创 C基础(6-10)

#include #include int IsPrime(int num){ int i= 2; if(num ==1) //1既不是质数也不是合数 return 0; for(;i<=

2016-06-17 19:18:57 248

原创 消息队列的简单实现

消息队列:一个进程向另一个进程发送数据块消息队列基于消息,管道基于字节流消息队列是用链表实现1.创建:int megget(key_t key, int msgflag)    key:函数ftok()的返回值    msgflag:IPC_CREAT是创建新的消息队列;IPC_EXCL与IPC_CREAT一起使用,即如果要创建的消息队列已存在,则返回错误    成功:返回队列标识

2016-06-17 18:37:28 301

原创 死锁

1.死锁:     多道程序并发执行时(多任务系统),一个/多个进程等待资源,而资源又被进程本身或其他进程占用着。(永久性等待)2.产生死锁的四个必要条件: (1)互斥条件。     进程对所分配到的资源进行排它性使用,即在一段时间内,某资源只由一个进程占用。如果此时还有其他进程请求该资源,则请求者只能等待,直到占有该资源的进程用完后释放。(2)请求和保持(占有且等待)。     指该进程至少保持

2016-06-17 18:37:25 223

原创 fopen、open、popen

1.fopen       ——FILE* fopen(const char* path,const char* mode)  打开普通文件  带缓冲区  缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据返回值: fopen()文件顺利打开后,返回指向该流的文件指针,如果打开文件失败,则返回NULL,并将错误代码

2016-06-17 18:37:22 506

原创 命名管道(FIFO)的实现

管道随进程命名管道是一个设备文件,是存在于硬盘上的文件用mkfifo()创建命名管道,可用于任何两个进程之间的通信client.c(写端)#include#include#include#include#include#include#include     #define _PATH_ "/tmp/file.tmp"#define _SIZE_ 100int mai

2016-06-17 18:37:19 427

原创 匿名管道的四种特殊情况

管道随进程匿名管道是存在于内存中的特殊文件特点:          1.单向          2.有血缘关系的进程间通信          3.实现进程间同步          4.提供“流式服务”匿名管道的实现:test.c#include#include#include#includeint main(){  int _pipe[2];  int ret

2016-06-17 18:37:17 376

原创 环形队列的实现原理

环形队列是一个首尾相连的FIFO(命名管道)的数据结构,它采用数组的线性空间。它能很快知道队列是否为满或者为空,也能很快的存取数据。原理:内存上没有环形结构,因此环形队列利用数组的线性空间来实现。当数据到了尾部时,它将转回到0位置来处理。这个转回操作通过取模来执行。构造:逻辑上,将数组q[0]与q[MAXN-1]相连接,形成一个存放队列的环形空间。     用数组下标来标明队列的读、写位置。hea

2016-06-17 18:37:14 3276 1

原创 Linux中进程正常退出return和exit()的区别

exit是一个函数,有参数。void exit(int status) 。exit执行完后把控制权交给系统。return是函数执行完后的返回。return执行完后把控制权交给调用函数。 return()是当前函数返回。如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值,依次类推。return是

2016-06-17 18:37:11 1960

原创 浅谈文件描述符与文件指针

一、文件描述符:内核利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。1.优点:       1.基于文件描述符的I/O操作兼容POSIX(可移植操作系统接口)标准       2.UNIX/LINUX的系统调用中,大量系统调用都依赖于文件描述符2.缺点:       1.在非UNIX/LINUX操作系统上,无法基

2016-06-17 18:37:08 262

原创 浅谈inode

1.初识inode:文件存于硬盘上(硬盘最小存储单元是“扇区”(sector),每个扇区储存512字节)操作系统读硬盘时,一次性读取一个“块”(block)(8个sector组成)由多个扇区组成的块——>文件存取的最小单位文件数据存储在“块”中储存文件元信息——>inode(索引节点)2.inode包含文件的元信息,其内容:  文件字节数、文件拥有者的User ID、文件的Group ID、文件的

2016-06-17 18:37:05 234

原创 二叉树的线索化

#includeusing namespace std;enum PointerTag{                 THREAD,                 LINK};templatestruct BinaryTreeNodeThd{                BinaryTreeNodeThd( const T & x)               

2016-06-17 18:37:03 148

原创 有关二叉树的简单实现

#include#include#includeusing namespace std;templatestruct BinaryTreeNode{                BinaryTreeNode(const T& x)                                :_data( x)                                

2016-06-17 18:37:00 236

原创 printf()的返回值

#include #include int main(){                 int i=43;                printf( "%d\n",printf("%d" ,printf("%d",i)));                system( "pause");                 return 0;}printf() 返回一个in

2016-06-17 18:36:57 733

原创 实现动态顺序表

头文件Seqlist.h中:#pragma once#include #include typedef int DataType;typedef struct SeqList{  DataType * _array;  //数据块指针  size_t _size;  //当前的有效数据个数  size_t _capacity;   //容量}Seqlist;//打印顺序表

2016-06-17 18:36:54 273

原创 有一个字符数组的内容为:&quot;student a am i&quot;,请你将数组的内容改为&quot;i am a student&quot;.

#include #include int length(const char *str){   int len=0;  assert(str);  while(*str)  {       len++;       str++;  }  return len;}void reverse_str(char *start,char *end){  while(star

2016-06-17 18:36:49 212

原创 判断回文数、回文字符串(从左边读和从右边读一样)

1.判断一个数是不是回文数,如:"123321"#include int main(){                 int m=1234;  //m是要判断的数                 int n=0;  //n是反转后的数                 int ret=m;                 while(m)                { 

2016-06-17 18:36:46 1265

原创 使用可变参数列表实现print(&quot;s\tc\n&quot;,&quot;bit-tech&quot;,&#39;w&#39;);

#include #include void print(char *format,...){  va_list arg;  va_start(arg,format);  while(*format)  {    switch(*format)                {                 case 's' :                      

2016-06-17 18:36:44 497

原创 使用可变参数列表实现任意个数求平均值

#include #include int average(int val,...){  int i=0;  int sum=0;  va_list arg;  va_start(arg,val);   for(i=0;i<val;i++)  {    sum+=va_arg(arg, int);  }  va_end(arg);  return sum/val;}

2016-06-17 18:36:41 413

原创 编写程序实现strlen()函数,strcmp(),strcpy(),strcat()的功能

1.strlen()函数的实现(求字符串长度的函数)#include #include int my_strlen(const char *str){  int count=0;  assert(str!=NULL);  while(*str)  {    count++;                str++;  }  return count;}int ma

2016-06-17 18:36:38 1893

原创 编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数

#include int main(){     char a=0;    int num_count=0;    int space_count=0;    int other_count=0;                                                 //注意此处,不能写成a=getchar(),然后while(a!='\n'),这样做只能输

2016-06-17 18:36:36 1151

原创 实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数

比如:输入字符串“1234”,返回数字1234。      输入字符串“+1234”,返回数字1234.      输入字符串“-1234”,返回数字-1234.                  #include int my_atoi(char s[10]){  int flag=1;  //代表符号位的正负号  int ret=0;   //用于存储取出来的数  ch

2016-06-17 18:36:33 1091

原创 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。(使用位运算)

#include int main(){     int arr[5];     int i,j;     int len=sizeof(arr)/sizeof(arr[0]);    //初始化数组     for(i=0;i<len;i++)           {       scanf("%d",&arr[i]);     }    //查找的过程     j=

2016-06-17 18:36:30 363

空空如也

空空如也

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

TA关注的人

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