- 博客(49)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 git新手学习和使用
一、git简介1、基本概念:git是一个开源的分布式版本控制系统。相对CVS和SVN是集中式的版本控制系统。集中式版本控制系统的版本库是集中放在中央服务器的,每次工作的时候都得从中央服务器获取最新的版本,完了以后再放回中央服务器。而分布式版本控制系统没有中央服器,每个人电脑上都有一个完整的版本库,可以自己操作不受任何人影响。2、版本库(Repository)版本库(Repo
2016-06-16 18:47:58
348
原创 二叉树的深度
思路一:递归遍历代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: int TreeDepth(TreeNode* pRoot) { if ...
2021-10-09 22:03:27
81
原创 删除链表中的节点
题目一:删除链表中的节点:1、时间复杂度为O(n),找到要删除链表的前一个节点,将该节点的next指向要删除的链表的next,然后删除该节点并置为NULL;2、时间复杂度为O(1),将要删除节点的后面的节点的值赋给删除的节点,将删除节点的next指向后面节点的next,然后删除后面的节点并置为NULL;注意:要考虑只有一个节点的情况,删除头节点也是尾节点;还要考虑如果要删除的节点是尾节点的情况,时间复杂度为O(n),要顺序遍历到尾节点的前一个节点,然后删除置为NULL;上述两种方法是基于要删除的
2021-10-09 21:27:44
2297
原创 链表中倒数第k个节点
思路:设置两个指针,第一个指针先走k步,第二个节点从起始点开始走,第一个节点走到末尾时,第二个节点也就是倒数第k个节点。代码:/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) : val(x), next(nullptr) {}* };*/class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿...
2021-10-06 22:29:38
84
原创 链表中环的入口节点
思路:快慢指针->快指针一次走两步,慢指针一次走一步。结论:1、设置快慢指针,假如有环,一定会在环中相遇; 2、两个指针相遇后,两个指针分别在表头和相遇点重新出发,每次只走一步,最后一定相遇于环入口。验证结论: 1、快指针一次走两步,慢指针一次走一步,慢指针一旦入环,就当作是快指针追慢指针,最后一定能追上; 2、假设快指针走的路径为:a+b+c+b,慢指针走的路径为a+b,因为快指针是慢指针走的2倍,所以:a+b+c+b=2(...
2021-10-06 22:01:46
197
原创 【Linux】多路复用之—epoll
一、多路复用之——epollint epoll_create(int size);int epoll_ctl(int epfd,int op,int fd,struct epoll_event* event);int epoll_wait(int epfd,struct epoll_event* events,int maxevents,int timeout);1、e
2016-05-22 12:17:03
411
原创 【Linux】多路复用之—poll
一:多路复用之——poll#includeint poll(struct pollfd *fs,nfds_t nfds,int timeout)1、参数:struct pollfd{int fd 关心的文件描述符short events 关心的事件short revents
2016-05-21 20:12:51
624
原创 【Linux】多路复用之—select
一:多路复用之——selectint select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct timeval* timeout) 1、参数: (1)nfds:需要监视的文件描述符数目; (2)readfds、writefds、ecceptfds:对
2016-05-20 21:21:08
398
原创 循环链表
#includeusing namespace std;typedef int DataType;class LinkNode{ friend class Slist;public: LinkNode(const DataType& x) :_date(x) , _prev(NULL) , _next(NULL) { }public: DataType _date
2015-09-19 15:36:12
361
原创 【C++】深拷贝
#includeusing namespace std;class String{public: //无参构造函数 String() :_ptr(new char[1]) { _ptr[0] = '\0'; } //有参构造函数 String(char* ptr) :_ptr(new char[strlen(ptr)+1]) { strcpy(_ptr, pt
2015-09-19 14:54:38
377
原创 【C++】写时拷贝COW
#includeusing namespace std;class String{public: //构造函数 String(const char* str="") :_str(new char[strlen(str)+1]) , _CountRef(new int(1)) { strcpy(_str, str); } //拷贝构造 String(const Str
2015-09-15 07:43:46
427
原创 【C++】实现单链表
#includeusing namespace std;typedef int DataType;struct LinkNode{ DataType _date; LinkNode* _next; LinkNode(const DataType& x) { _date = x; _next = NULL; }};class SList{public: //构造
2015-09-14 10:40:09
268
原创 【C++】实现顺序表
#pragma once#includeusing namespace std;#define DefauleCapacity 5typedef int DataType;class Seqlist{public: //构造函数 Seqlist() :_array(new DataType[DefauleCapacity]) { _capacity = Defau
2015-09-14 10:38:03
328
原创 【C++】实现万年历
/******************************************************************************************Purpose:声明并实现一个万年历类【腾讯面试题】Author:周蒙蒙Created Time:2015-8-19******************************************
2015-08-31 14:14:09
2343
原创 double my_atof(char *str)
编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)例如:“12.34“ 返回12.34“ - 123.34“ 返回 - 123.34函数原型:double my_atof(char *str)#include#include#includedouble my_atof(char *str){ double ret = 0.0; int
2015-08-05 09:48:57
605
原创 动态链表增删改查及排序功能
主要功能的实现:#include "SeqList.h"void InitSeqList(SeqList * pSeq)//初始化{ assert(pSeq); pSeq->array = (DataType*)malloc(sizeof(DataType)*DEFAULT_CAPICITY); pSeq->size = 0; pSeq->capicity = DEFAULT_CA
2015-06-26 16:09:02
993
原创 实现位操作
//实现对一个8bit数据(unsigned char类型)的指定位的置0或者置1操作,并保持其他位不变#includevoid bit_set(unsigned char *p_data,unsigned char position,int flag){ unsigned char bit=1<<(position-1); if(flag)//置1操作 { *p_data=*p
2015-06-09 16:27:24
548
原创 【C语言】字符串操作函数my_strcpy
//实现字符串操作函数strcpy#include#includechar *my_strcpy(char *dest, const char *src){ char *ret = dest; assert((dest != NULL) && (src != NULL));//断言 if(dest == src) return dest; while(*dest++ = *sr
2015-05-22 13:09:24
756
原创 【C语言】字符串操作函数my_strcat
//实现字符串操作函数strcat#include#includechar *my_strcat(char *str1,char const *str2){ char *p=str1; assert((str1 != NULL) && (str2 != NULL)); while(*str1 !='\0') { str1++; } while(*str2 !='\0')
2015-05-22 13:07:40
842
原创 【C语言】字符串操作函数my_strcmp
//实现字符串操作函数strcmp#includeint my_strcmp(char *str1,char *str2){ while(*str1==*str2) { if(*str1=='\0') return 0; else { str1++; str2++; } } if(*str1>*str2) return -1; else r
2015-05-22 13:05:33
1043
原创 【C语言】实现一个简单的通讯录
#include#include"contact.h"void print_menu(){ printf("*******************************\n"); printf("***1>add 2>del ******\n"); printf("***3>search 4>modify ******\n"); printf("***
2015-05-20 14:14:02
2542
原创 两种方法实现判断当前机器是大端还是小端
大端:高位存低地址,地位存高地址小端:高位存高地址,低位存低地址//用联合的方式实现#includeunion UN{ int a; char c;};int main(){ union UN un; un.a=1; if(un.c==1) printf("little\n"); if(un.c==0) printf("big\n"); return 0;}
2015-05-17 13:22:28
1347
原创 结构体内存对齐规则
结构体内存对齐规则1、第一个成员在与结构体变量偏移量为0的地址处;2、其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处; 对齐数=编译器默认的对齐数 与 该成员大小的较小值; vc中默认为对齐数为8 linux中默认对齐数为43、结构体总大小为最大对齐数的整数倍;4、如果嵌套了结构体,嵌套的结构体对齐到自己的最大对齐数的整数
2015-05-13 18:31:18
726
原创 用可变参数列表实现求n个数的平均值
va_list arg;声明一个va_list 类型的变量arg,它用于访问参数列表的未确定部分;va_start(arg,val);第一个参数是va_list的变量名,第二个参数是不确定参数的前一个参 数;a_arg(arg,int);返回这个参数的值,并使用var_arg指向下一个可变参数,第一个参数是
2015-05-11 21:26:50
820
原创 字符串翻转
//将student a am i 转换成 i am a student#include#include//翻转一个单词/*void reverse_string(char *l,char*r){ while(l<r) { char tmp; tmp=*l; *l=*r; *r=tmp; l++; r--; }}//由空格判断一个单词,调用reverse
2015-05-11 21:10:18
552
原创 在终端输入多行信息,找出包含“ould”的行,并打印改行
#include #include#define MAX 1000//读取字符串函数int getline(char line[],int max)//max为数组剩余长度{ char ch; int i=0; while(max>0 && (ch=getchar())!=EOF && ch!='\n') { line[i]=ch;//读取字符放到数组Line中 i++;
2015-05-11 20:57:00
583
原创 使用递归实现DigitSum()函数,输入一个非负整数,返回组成它的数字之和
#includeint DigitSum(int n){ if(n<10) return n; else return (n%10 + DigitSum(n/10));}int main(){ int ret1=DigitSum(9); int ret2=DigitSum(146); printf("%d\n",ret1); printf("%d\n",ret2);
2015-05-10 09:59:27
428
原创 使用递归实现n^k
#includeint fun(int n,int k){ if(k==0) return 1; if(k>0) { return n*fun(n,k-1); }}int main(){ int ret=fun(2,5); printf("%d\n",ret); return 0;}
2015-05-10 09:31:37
323
原创 判断1000-2000年之间的闰年,并输出
#include int main(){ int year=1000; for(year=1000;year<=2000;year++) { if((year%400==0)||((year%4==0)&&(year%100)!=0)) { printf("%d ",year); } } return 0;}
2015-04-11 20:55:48
714
原创 求十个数中的最大值
#include int find_max(int a[10],int len){ int max=a[0]; int i=0; for(i=1;i<len;i++) { if(max<a[i]) { max=a[i]; } } return max;}int main(){ int a[]={1,2,3,4,11,6,7,8,9,10}; in
2015-04-11 20:53:03
632
原创 不允许创建临时变量,交换两个数的内容(用异或实现)
#include int main(){ int a=10,b=20; a=a^b; b=a^b; a=a^b; printf("a=%d\nb=%d\n",a,b); return 0;}
2015-04-11 20:49:29
351
原创 不允许创建临时变量,交换两个数的内容(用加减乘除实现)
#include int main(){ int a=10,b=20; a=a+b; b=a-b; a=a-b; printf("a=%d\nb=%d\n",a,b); return 0;}
2015-04-11 20:48:10
350
原创 输出乘法口诀表
#include void fun(void){ int i=0,j=0; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { printf("%d*%d=%d ",i,j,i*j); } printf("\n");//注意换行 } }int main(){ fun(); return 0;}
2015-04-11 20:46:02
301
原创 求100-200之间的素数
#include int main(){ int i=0; int j=0; for(i=100;i<=200;i++)//优化1 for(i=101;i<=199;i+=2) { for(j=2;j<i;j++)//优化2 for(j=2;j<(i/2);j++) 优化3 for(j=2;j<(int)sqrt(i);j++) { if(i%j==0) bre
2015-04-11 20:44:16
330
原创 求无符号整型二进制数1个数的优化程序
#include int count_bit(unsigned int value){ int count=0; //15->1111 1111 & 1110 = 1110 while(value) //1110 & 1101 = 1100 { //1100 & 1001 = 1000 count++; //1000 & 0111 = 0000 v
2015-04-11 20:35:22
405
原创 返回无符号整形的二进制数1的个数
#include int count_one_bits(unsigned int value){ int i=1; int count=0; while(value!=0) { if((value%2)==1) count++; value=value/2; } return count;}int main(){ int ret=0; ret=count_
2015-04-11 20:27:07
382
原创 求两个整型变量的最大公约数
#include int yueshu(int n1,int n2){ while(n2!=0) { int ret=n1%n2;//辗转相除法 n1=n2; n2=ret; } return n1;}int main(){ int ret=yueshu(15,4); printf("%d\n",ret); return 0;}
2015-04-09 22:01:52
417
原创 使用递归实现厄密多项式
#include int hermite(int n,int x){ if(n<=0) return 1; else if(n==1) return 2*x; else return 2 * x *(hermite(n-1,x))-2*(n-1)*(hermite(n-2,x));}int main(){ int ret= hermite(1,2); printf
2015-04-09 17:18:06
345
原创 字符反向排列函数reverse_string(char *str)
#include void reverse_string(char *str){ int i = 0; int j = 0; int temp = 0; while(str[i] != '\0') { i++; } while(j < i) { temp = str[j]; str[j] = str[i-1]; str[i-1] = temp; j++;
2015-03-21 22:38:13
530
原创 实现追加函数char *my_strcat(char *dest,char *src)
#include char *my_strcat(char *dest ,char *src){ char *p; p = dest; while(*p != '\0') { p++; } while(*src != '\0') { *p = *src; p++; src++; } *p ='\0'; return dest;}void main(){
2015-03-21 21:16:42
898
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人