- 博客(17)
- 收藏
- 关注
原创 排序(二)
五、快速排序//时间复杂度:O(nlogn)//空间复杂度:O(nlogn)//稳定性:不稳定int Partion(int* arr,int low,int high){ int tmp=arr[low]; while(low<high) { while(low<high&&arr[high]>tmp) high--; if(low...
2019-09-09 16:31:24
148
原创 单链表各种操作
typedef struct Node{ int data; Node* next;}Node,*List;//链表结构体定义void InitList(List plist)//单链表初始化{ assert(plist!=NULL); if(plist==NULL) { return; } plist->next=NULL;}static Node* Get...
2019-09-06 19:15:11
122
原创 剑指offer-005(从尾到头打印链表)
单向链表末尾添加结点:struct ListNode{ int m_nValue; ListNode* m_pNext;};void Add(ListNode** pHead,int value)//如果原本没有头结点的话,那么插入的结点即为头结点,pHead要为指向指针的指针{ ListNode* pNew = new ListNode(); pNew->m_nValue...
2019-02-19 21:38:00
140
原创 剑指offer-004(替换空格)
题目:请实现一个函数,把字符串中的每个空格替换成“%20”,例如输入“We are happy.”,则输出“We%20are%20happy.”。常规考虑时间复杂度为O(n^2),但如果先计算出空格个数,再利用两个指针,时间复杂度可以缩减为O(n)。void ReplaceBlank(char string[],int length){ if(string == NULL &&am...
2019-02-18 20:32:32
138
原创 剑指offer-003(二维数组中的查找)
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。1 2 8 92 4 9 124 7 10 136 8 11 15在上面的二维数组中查找数字7。如果从右上开始查找可...
2019-02-16 10:36:17
105
原创 剑指offer-001(赋值运算符重载函数)
剑指offer-001(赋值运算符重载函数)#include<cstring>#include<cstdio>class CMyString{public: CMyString(char* pData = nullptr); CMyString(const CMyString& str); ~CMyString(void); CMyString&...
2019-02-15 10:12:44
170
原创 c++智能指针
为什么要使用智能指针使用裸指针存在资源泄露问题智能指针在栈上保证了资源的自动释放不带引用计数的智能指针auto_ptr:原来的auto_ptr置空,只有最新的auto_ptr指针才能访问资源scope_ptr:把拷贝构造和=运算符重载设为私有导致编译失败unique_ptr:只有用move才能将资源转到另一个unique_ptr带引用计数的智能指针shared_ptr:是线程安全的...
2018-11-01 22:50:47
103
原创 几种排序
一、冒泡排序 /时间复杂度:O(n^2) //空间复杂度:O(1) //稳定性:稳定 void Bubble_Sort(int *arr,int len) { assert(arr != NULL); int tmp = 0; bool swap = false; for(int i = 0;i &amp;lt; len - 1;i++) { ...
2018-06-12 22:30:22
123
原创 指针和引用
★ 相同点:1. 都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。★ 区别:1. 指针是一个实体,而引用仅是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之后不可变;指针可变;4. 引用没有 const,指针有 const;5. 引用不能为空,指针可以为空;6. “sizeof 引用”得到的是所指向的变量(对象)的大
2017-10-24 13:05:14
161
原创 悬空指针
在C/C++等语言中,悬空指针(Dangling Pointer)指的是:一个指针的指向对象已被删除,那么就成了悬空指针。野指针是那些未初始化的指针。例如:int main(){char*dp = NULL;for(i=0;ichar c;dp =&c;}/* 注意c的声明周期 *//* dp 此时为悬空指针 */
2017-10-24 13:00:47
973
原创 函数的声明和定义
C语言中一个完整的函数由函数首部和函数体构成,而且定义函数时两者都是必不可少的。函数声明表示有这么个函数了,函数定义就是具体实现了。举个例子:函数声明:int fun(int a, int b); 函数定义:int fun(int a,int b) { int c; c=a+b; return c; } 函数声明就像是函数定义的头部
2017-10-17 15:40:28
4394
原创 continue;go to;;break;return
break是结束整个循环体,continue是结束单次循环比方说:while(x++ { if(x == 3) { break; } printf("%d\r\n", x);}结果是输出 1 2 就退出了整个while循环但是如果使用continuewhile(x++ { if(x == 3) { continue; }
2017-10-17 15:32:49
477
原创 inline
在函数声明或定义中函数返回类型前加上关键字inline,即可以把函数指定为内联函数。关键字inline必须与函数定义放在一起才能使函数成为内联,仅仅将inline放在函数声明前面不起任何作用。inline是一种“用于实现的关键字”,而不是一种“用于声明的关键字”。1. inline 定义的类的内联函数,函数的代码被放入符号表中,在使用时直接进行替换,(像宏一样展开),没有了调用的开销,
2017-10-11 16:28:34
211
原创 #define PINT int* typedef int *SINT
#define PINT int* 就是把所有的词 PINT 替换成 int * ,替换完毕再编译。 int* x; 和PINT x; 的声明是等价的。long int* x; 声明是可以的,long PINT x; 也是可以的typedef int* PINT; 是语句,由编译器在编译过程中编译处理。
2017-10-11 16:15:38
285
原创 宏以及#define;enum;const的区别
所谓宏,就是一些命令组织在一起,作为一个单独命令完成一个特定任务。Microsoft Word中对宏定义为:“宏就是能组织到一起作为一独立的命令使用的一系列word命令,它能使日常工作变得更容易”。Word使用宏语言Visual Basic将宏作为一系列指令来编写。计算机科学里的宏是一种抽象的,根据一系列预定义的规则替换一定的文本模式。Excel办公软件自动集成了“VBA”高级程序语言,用
2017-09-27 22:49:21
354
原创 2017.9.21作业
sizeof:在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。转义字符:所有的ASCII码都可以用“\
2017-09-22 22:59:23
168
翻译 9.20第一次作业
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说: add eax,-2 ; //可以认为是给变量eax加上-2这样的一个值。这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。EAX 是"累加器"
2017-09-20 21:50:25
387
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人