自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 string类、string类模拟实现、深浅拷贝、写实拷贝

1. 为什么学习string类?C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。 2. 标准库中的string类2.1 string类1. string是表示字符串的字符串类 2. 该类的接口与常规容器的接口基本...

2019-08-07 14:52:40 222

原创 stl

目录1. 什么是STL2.STL的六大组件STL六大组件3.STL的缺陷1. 什么是STLSTL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。2.STL的六大组件STL六大组件容器(Container)算法(Algorithm)迭代...

2019-08-07 14:14:47 401

原创 c++模板入门,泛型编程、函数模板、类模板

目录1. 泛型编程2. 函数模板2.1 函数模板概念2.2函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则3. 类模板3.1 类模板的定义格式3.2 类模板的实例化1. 泛型编程如何实现一个通用的交换函数?使用函数重载虽然可以实现,但是有一下几个不好的地方: 1. 重载的函数仅仅只是类型不同,代码的复...

2019-08-07 13:56:54 229

原创 C/C++内存管理

目录1. C/C++内存分布2. C语言中动态内存管理方式3. C++内存管理方式4. operator new与operator delete函数5. new和delete的实现原理6. 定位new表达式(placement-new)7. 常见面试题1. C/C++内存分布【说明】 1. 栈又叫堆栈,非静态局部变量/函数参数/返回值等等...

2019-08-07 13:38:17 429

原创 类与对象:类的6个默认成员函数: 构造函数、析构函数、拷贝构造函数、赋值操作符重载、默认拷贝构造与赋值运算符重载的问题、const成员函数、 取地址及const取地址操作符重载

1.类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。构造函数 析构函数 拷贝构造函数 赋值操作符重载 const成员函数 取地址及const取地址操作符重载2. 构造函数2.1 概念构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合...

2019-08-07 11:17:22 953

原创 类与对象、this指针、类的对象大小的计算、类的作用域、类的实例化

目录1.类与对象的初步认知2.类的引入3.类的定义4.类的访问限定符及封装5.类的作用域6.类的实例化7.类对象模型8.this指针1.类与对象的初步认知C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。2.类的引入...

2019-08-07 10:16:07 160

原创 c++入门、关键字、命名空间、出入输出、缺省参数、函数重载、引用、内联函数、auto、范围for循环、指针空值null

目录1.什么是C++c++关键字:(c++98)2. 命名空间3. C++输入&输出4. 缺省参数5. 函数重载6. 引用7. 内联函数宏:定义常量、定义宏函数。(缺陷很大)#define8. auto关键字(C++11)9. 基于范围的for循环(C++11)1.什么是C++ C语言是结构化和模块...

2019-08-07 09:35:40 322

原创 leetcode155:最小栈

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。//使用两个栈class MinStack {public: stack<int> q; stack<int> min; /** initialize your data structure here. */ MinStack() { ...

2019-08-06 21:46:51 120

原创 leetcode225:用队列实现栈

使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你...

2019-08-06 21:46:32 180

原创 leetcode232:用栈实现队列

使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/implement-queue-using-stacks...

2019-08-06 21:46:14 202

原创 leetcode20:有效的括号(c语言和c++两种解法)

方法一:C语言bool isValid(char* s) { char a[100000] = { 0 }; int count = 0; while(*s) { switch(*s) { case '{': case '[': case '(':...

2019-08-06 21:46:02 391

原创 栈、队列

栈: 先进后出#include<stdio.h>typedef struct Stack { int array[100]; int size;} Stack;//初始化void StackInit(Stack* s){ s->size = 0;}//销毁void StackDestroy(Stack* s){ s-&...

2019-08-05 15:18:04 118

原创 leetcode141环形链表

给定一个链表,判断链表中是否有环。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; *///快慢指针bool hasCycle(struct ListNode *head) { struct Lis...

2019-08-05 14:08:28 128

原创 leetcode160相交链表

编写一个程序,找到两个单链表相交的起始节点。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */int getlen(struct ListNode *head){ int l = 0; ...

2019-08-05 13:57:36 110

原创 牛客网:删除链表中重复节点

题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5class Solution {public: ListNode* deleteDuplication(ListNode* pHead) { ...

2019-08-05 12:43:50 183

原创 leetcode21. 合并两个有序链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists...

2019-08-05 12:16:06 114

原创 牛客网 输入一个链表,输出倒数第k个节点

/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { ...

2019-08-05 11:45:25 166

原创 leetcode第203题用C语言移除链表元素

删除链表中等于给定值val的所有节点。方法一: 递归法/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* removeElements(struct ListN...

2019-08-05 11:26:37 239

原创 leetcode第206题,C语言反转单链表题

方法一:三指针反转法/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* head) { struct Li...

2019-08-05 10:44:23 218

原创 链表

链表的概念: 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的。#include<stdio.h>#include<malloc.h>#include<assert.h>typedef int SlistDataType ;//定义链表中的节点的结构体typedef s...

2019-08-05 10:06:50 124

原创 顺序表的创建、增、删、查、改、打印、销毁

#include<stdio.h>#include<assert.h>#include<malloc.h>#include<stdlib.h>typedef int SLDataType;//可更改方便数据类型的动态数据表//静态顺序表typedef struct SeqList1 { int array[100]; //容量...

2019-08-05 09:14:34 147

原创 结构体位段、枚举、联合体(共用体)

位段什么是位段? 位段,C语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或称“位域”( bit field) 。利用位段能够用较少的位数存储数据。位段的声明 位段的声明和结构是类似的,有两个不同:位段的成员必须是 int、unsigned int、 signed int、char 整形家族。 位段的成员后面有一个冒号和数字...

2019-07-02 00:25:01 350

原创 结构体----------内存对齐

1.什么是内存对齐? 内存对齐”应该是编译器的“管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上。但是C语言的一个特点就是太灵活,太强大,它允许你干预“内存对齐”。2.为什么存在内存对齐?1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性...

2019-06-28 00:38:30 107

原创 结构体基础

结构体结构是一些值的集合,这些值称为成员变量。结构体的每个成员变量可以是不同类型的变量。结构体的声明1.一般声明struct tag//结构体类型名{ member-list;//成员列表 //.......}variable-list;//变量列表,全局变量2.特殊的声明//匿名的结构体类型,不完全的声明struct{ int a...

2019-06-27 23:12:01 196

原创 指针和数组笔试题解析

//一维数组#include<stdio.h>int main(){ int a[] = { 1,2,3,4 }; printf("%d\n", sizeof(a));//16 //求数组大小 printf("%d\n", sizeof(a + 0));//4 //求首元素地址大小 printf("%d\n", sizeof(*a));/...

2019-06-26 23:52:00 124

原创 数组指针、指针数组、函数指针、函数指针数组、指向函数指针数组的指针、回调函数

数组指针数组指针的定义:int (*p)[10];//p先和*结合,说明p是一个指针变量,然后指针指向一个大小为10个整形的数组。所以p是一个指针,指向一个数组,叫指针数组。//[]的优先级高于*号的,所以必须加上()来保证p和*先结合。&数组名和数组名:int arr[10];arr是数组名,也就是首元素的地址。而 &arr 表示的是数组的地址 ,而不是首元素的...

2019-06-26 22:57:24 176

原创 C语言指针

指针是什么?指针是一个变量或者说是编程语言中的一个对象,存放内存单元的地址。“指针”的意思就是通过它能找到以它为地址的内存单元。指针是用来存放地址的,地址是唯一标志一块地址空间的。指针大小在32位平台下是4字节。在64位平台下是8字节的。指针和指针类型指针是有类型的,类型名为: 类型说明符*指针类型的定义:类型说明符(目标变量的类型) *(指针类型说明符) 指针变量名如...

2019-06-26 16:38:49 102

原创 高级IO、详细的IO多路转接

高级IO:五种典型IO: 阻塞IO/非阻塞IO/信号驱动IO/异步IO/IO多路转接IO操作的流程: 等待IO操作条件具备,然后进行数据拷贝。任何IO过程中, 都包含两个步骤. 第一是等待, 第二是拷贝. 而且在实际的应用场景中, 等待消耗的时间往 往都远远高于拷贝的时间. 让IO更高效, 最核心的办法就是让等待的时间尽量少.阻塞IO:为了完成IO操作发起的调用,当前不具备IO操作条件...

2019-06-25 21:33:22 353

原创 字符函数和字符串函数的使用和实现

strlen,strcpy,strcat,strcmp,strstr

2019-06-22 02:34:19 110

原创 C语言数据类型

数据类型,大小端数据类型名称64位系统下数据大小char字符数据类型1short短整型2int整形4long长整形8long long更长的整形8float单精度浮点数4double双精度浮点数8构造类型:数据类型结构体类型struct枚举类型enum联合体类型union指针类型、空类型:v

2019-06-22 02:00:01 89

原创 C语言求最大公约数的三种方法

sadjksackjas

2019-05-27 08:51:15 3460

原创 指针的初始化

有下面的代码 #include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;int main(){ int* a; *a = 1; system("pause"); return 0;}我在这里声明创建了一个名为a的指针变量,然后把1赋值给a所指向的那块内存空间。编译结果如下:a未初始化,到底指向哪里根本我们不得而知。所以我们在进行赋值...

2018-12-06 20:13:37 14393

原创 字符指针

字符指针:char*字符指针的使用:#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;int main(){ char ch = 'a'; char* p = &amp;ch; printf("%c\n", *p); system("pause"); return 0;}字符指针可以用来访问或者更改字符变量#include...

2018-12-06 19:39:06 178

原创 指针

指针:指针是一个变量,这个变量是用来存放地址的,地址唯一标识一块内存空间。指针的大小是固定的4/8个字节(由平台决定,32位/64位)#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;int main(){ int a = 1; char b = 'a'; int arr[5] = { 0 }; int* p = &amp;a...

2018-12-06 19:04:57 139

原创 用c语言,测试各种数据类型所占空间大小

#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;int main(){ int n = 0;//整型 char ch = 0;//字符 int arr1[5] = { 0 };//整型数组 char arr2[5] = { 0 };//字符数组 int* p1 = &amp;n;//整形指针 char* p2 = &amp;ch;/...

2018-11-29 22:32:16 4363

原创 递归和非递归分别实现求n的阶乘

//递归和非递归分别实现求n的阶乘 #include&amp;lt;stdio.h&amp;gt;#include&amp;lt;stdlib.h&amp;gt;int a(int n){ if(n&amp;gt;1) { return n * a(n-1); } return 1;}int b(int n){ int s = 1; for(; n&amp;gt;=1; n--)

2018-11-29 22:18:48 479

空空如也

空空如也

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

TA关注的人

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