自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 类和对象(二)

编译器默认生成的无参构造函数是有缺陷的,该构造函数只会去自动调用类里变量中的其他类对象的默认构造函数初始化,而不会对内置类型变量进行初始化。所以一般还是需要我们自己写构造函数的。例.如下Date日期类,没有自己写构造函数,而是由编译器生成的默认构造函数来初始化类对象。

2023-12-10 12:40:44 88

原创 类与对象(一)

/类体:由成员函数和成员变量组成//一定要注意最后结尾的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。声明和定义全部放在类体中需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理(代码短会被当成内联函数处理,代码长会当成普通函数处理)类声明放在.h文件中,成员函数定义放在.cpp文件中。

2023-12-09 22:24:33 95

原创 C++入门基础

C++入门基础,扎实入门。

2023-02-14 15:46:24 389

原创 Linux多线程 线程概念 | 线程VS进程 | 线程控制【万字精讲】

Linux多线程万字精讲~

2023-01-18 01:12:19 629 1

原创 set | map | multiset | multimap 快速上手

set | map | multiset | multimap 快速上手~

2022-11-03 21:39:37 339

原创 二叉搜索树【二叉树进阶】概念性质 | 操作及功能实现(递归/非递归) | 应用 |性能分析 | 面试题

二叉搜索树新鲜出炉,各位看官走过路过不要错过啦~

2022-10-26 18:43:10 522

原创 进程控制【万字详解】进程创建 | 进程终止 | 进程等待 | 进程替换 | 实现简易minishell

进程控制万字详解,各位老爷们走过路过不要错过啦

2022-10-05 18:26:42 1512 1

原创 虚拟地址空间【详解】 虚拟地址空间是什么 | 为什么要有虚拟地址空间

虚拟地址空间来辣!各位看管走过路过不要错过啦

2022-09-18 22:31:28 2007 2

原创 剑指 Offer 10- II. 青蛙跳台阶问题

【代码】剑指 Offer 10- II. 青蛙跳台阶问题。

2022-09-06 16:26:32 309

原创 归并排序--MergeSort()--递归版本

【代码】归并排序--MergeSort()

2022-09-05 16:27:10 313

原创 快速排序--QuickSort()--递归版本

快排的模板优化、三种快排方法、快排疑惑解答

2022-09-05 16:02:46 1086 1

原创 冒泡排序--BubbleSort()

【代码】冒泡排序--C语言版。

2022-08-25 19:10:05 358

原创 希尔排序--ShellSort()

【代码】希尔排序。

2022-08-25 18:57:30 382

原创 插入排序--InsertSort()

【代码】插入排序--C语言版。

2022-08-25 15:32:32 314

原创 堆排序--HeapSort()

思路:## 升序--大堆--将堆顶最大的元素和最后一个元素交换,放在最后一位,然后size--,每完成一次,堆剩下的数进行一次向下调整,和HeapPop的思路类似。依次将最后一位放最大,倒数第二位放次大,.......依次类推,可以堆进行排序。(升序--而不是建小堆,因为选出最小放在首位的容易,但选出次小的放在第二位难,之后的都不容易放。只能选一个次小的,再建堆,选次小,建堆,时间复杂度会达到O(N^2),该方法不是不可以,而是效率太差,没有使用到堆的优势 )(由数组建堆)(堆排序的前提是有堆).....

2022-08-25 15:24:54 447

原创 层序遍历BFS(广度优先)

代码】层序遍历BFS(广度优先)

2022-07-17 11:41:26 344

原创 二叉树OJ题,IO题

二叉树节点数/叶子节点数 、求二叉树第k层节点个数、 查找二叉树中值为x的节点 、求二叉树深度、 单值二叉树、 相同的树、对称二叉树、 另一棵子树、 二叉树的构建和遍历(IO型)、 前序遍历 、 中序遍历、 后序遍历、 判断二叉树是否为完全二叉树...

2022-07-17 11:39:07 563

原创 设置循环队列

链接:力扣//1.用数组模拟实现循环队列,用int head;和int tail记录头和尾的位置,使得头删不用挪动数组,只需要挪动int head;//2.或者用链表实现,头删也不用挪动数组typedef struct { int* a;//动态数组 int k;//元素个数 int head;// int tail;} MyCircularQueue;//初始化循环队列MyCircularQueue* myCircularQueueCreate(.

2022-05-22 22:33:32 234

原创 用栈实现队列

链接:力扣typedef int STDataType;typedef struct Stack{ STDataType* a; int top;//法1.初始化top=-1;则top先++,再放入元素到top处,此时放完最后一个元素后,top等于最后一个元素的下标,即栈顶的下标,此时的top+1才等于capacity; //法2.初始化top=0;则先放元素到top处,再top++;此时放完最后一个元素,也就是放完栈顶的那个元素后,top等于栈顶(最后的那个元素)的下标+1,此时的top=

2022-05-18 21:44:53 114

原创 用两个队列模拟实现栈

链接:力扣#include <stdio.h>#include <assert.h>#include <stdlib.h>#include <stdbool.h>//队列:先进先出-----尾插头删typedef int QDataType;// 链式结构:表示队列 --普通单链表队列 有空概念 , 无满概念typedef struct QListNode{ struct QListNode* next; QDataType

2022-05-18 16:27:57 171

原创 链表模拟实现队列Queue

//Queue.h#pragma once#pragma once#include <stdio.h>#include <assert.h>#include <stdlib.h>#include <stdbool.h>//队列:先进先出-----尾插头删typedef int QDataType;// 链式结构:表示队列 --普通单链表队列 有空概念 , 无满概念typedef struct QListNode{ str.

2022-05-17 16:23:05 326

原创 栈实现有效括号的匹配

链接:力扣解析:*s为左括号就进栈, *s为右括号就让栈里的栈顶元素出栈,如果栈顶元素和*s不匹配那就return false,如果栈顶元素和*s匹配那就pop掉栈顶元素,并使s++直到*s='\0',而且要stackempty判断栈为空为止,若结束后栈内为空则return true; 若不为空,如例子*s="(",此时栈里有"(",但*s='\0'了,此例子仍然是错的,要return false;本人版本:#define _CRT_SECURE_NO_WARNINGS 1#inc.

2022-05-16 19:31:13 174

原创 1.栈的压栈(入栈、进栈)及出栈 2.顺序表及链表的缓存命中

一、栈的压栈(入栈、进栈)及出栈1.栈1.1栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶----遵循 后进先出(先进后出)的原则 Last In First Out数组模拟实现栈 的链接:(9条消息) 数组 模拟实现 栈_a

2022-05-14 20:44:07 6974

原创 数组 模拟实现 栈

//Stack.h#pragma once//栈遵循先进后出,后进先出的原则且不能随机插入或者删除元素,只能从栈顶放入或者取出元素#include <stdio.h>#include <assert.h>#include <stdlib.h>#include <stdbool.h>//静态栈//#define N 10//typedef int STDataType;//typedef struct Stack//{/.

2022-05-14 13:57:33 364

原创 复制带随机指针的链表(深拷贝)

链接:力扣struct Node* BuyNode(int x){ struct Node* newnode=(struct Node*)malloc(sizeof(struct Node)); assert(newnode); newnode->val=x; newnode->next=NULL; newnode->random=NULL; return newnode;}struct Node* copyRandomList.

2022-05-14 01:02:28 173

原创 带头+双向+循环 链表增、删、查、改的实现

带头+双向+循环 链表 示意图:文件代码: (注:因为使用了哨兵位,保证了链表一开始必有一个哨兵位节点所以不用单独考虑链表一开始没有节点的情况了,也就是不用传链表的二级指针了--&list;)//List.h#pragma once#include <stdio.h>#include <stdlib.h>#include <assert.h>// 带头+双向+循环链表增删查改实现typedef int LTDataType;...

2022-05-13 10:56:42 219

原创 环形链表Ⅱ---环链表开始的位置

1.公式法struct ListNode *detectCycle(struct ListNode *head) { struct ListNode* slow,*fast; slow=fast=head; while(fast&&fast->next)//先循环找交点 { slow=slow->next; fast=fast->next->next;.

2022-05-12 12:16:08 157

原创 qsort函数各种排序的模拟实现

//qsort函数的模拟和使用#include <stdio.h>#include <string.h>//qsort的各种排序取决于cmp函数的内容//1.数组元素的大小排序int cmp(void const* e1, void const* e2){ return *(int*)e1 - *(int*)e2;}//2.结构体名字首字母的排序int cmp(void const* e1, void const* e2){ return.

2022-05-06 16:06:53 60

原创 输出链表倒数第k个节点

链接:https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&&tqId=11167&rp=2&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking//1.恒距丈量法struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) .

2022-05-06 15:36:12 175

原创 环状链表Ⅰ(快慢指针法)

链接:https://leetcode-cn.com/problems/linked-list-cycle/description///1.刷圈问题,追及问题(快慢指针)--本人方法bool hasCycle(struct ListNode *head) { if(head==NULL)//若链表为空,则链表中不可能有环 { return false; } //链表不为空 struct ListNode* fast,*..

2022-05-06 13:06:14 470

原创 两个链表的相交

链接: https://leetcode-cn.com/problems/intersection-of-two-linked-lists/description///1.暴力遍历对比法struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) { struct ListNode* tailA=headA; struct ListNode* tailB=headB;.

2022-05-06 13:04:50 128

原创 链表的回文结构

链接: https://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa?tpId=49&&tqId=29370&rp=1&ru=/activity/oj&qru=/ta/2016test/question-ranking//1.快慢指针法 找中点 + 后半部分 逆置法struct ListNode* reverseList(struct ListNode* head){ if(.

2022-05-06 13:03:41 174

原创 链表的分割

链接: https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70?tpId=8&&tqId=11004&rp=2&ru=/activity/oj&qru=/ta/cracking-the-coding-interview/question-ranking//1.哨兵位法class Partition {public: ListNode* partition(ListNod.

2022-05-06 13:02:45 371

原创 删除链表中指定的val值

链接:https://leetcode-cn.com/problems/remove-linked-list-elements/submissions///1.先后指针法(选择性删除)struct ListNode* removeElements(struct ListNode* head, int val){ struct ListNode* pre=NULL; struct ListNode* cur=head; while(cur) { .

2022-05-03 22:27:45 218

原创 将两个链表合并成有序链表(归并法)

链接:https://leetcode-cn.com/problems/merge-two-sorted-lists///1.哨兵位+双指针法(有错误,待修改)struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){ struct ListNode* head=(struct ListNode*)malloc(sizeof(struct ListNode*)); if(h.

2022-05-03 22:26:54 1239

原创 找链表的中间节点

链接:https://leetcode-cn.com/problems/middle-of-the-linked-list/submissions///1.快慢指针算法(v 和 2v,当2v的指针走到终点,v指针刚好走到中间)struct ListNode* middleNode(struct ListNode* head){ struct ListNode* low,*fast; low =head; fast=head; while(fast!=NULL.

2022-05-03 22:24:25 175

原创 链表的反转

链接:https://leetcode-cn.com/problems/reverse-linked-list/description///1.头插法(一开始是插到NULL前面,后面继续插到前一个)struct ListNode* reverseList(struct ListNode* head){ struct ListNode* newhead=NULL; struct ListNode* cur=head; while(cur).

2022-05-03 22:23:30 311

原创 C语言SList链表的多功能的实现

//SList.h#pragma once#include <stdio.h>#include <stdlib.h>#include <assert.h>// slist.htypedef int SLTDateType;typedef struct SListNode{ SLTDateType data; struct SListNode* next;}SListNode;// 动态申请一个节点SListNode* BuySListNode.

2022-05-03 17:29:30 879

原创 Seqlist顺序表的实现

Seqlist.h#pragma once#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef int SLDataType;//创立动态顺序表typedef struct SeqList{ SLDataType* a;//指向动态数组的指针 int sz;//数据个数 int capacity;//容量}SL;void IntiSeqList(SL*

2022-04-25 21:22:01 346

原创 详解--复杂度详解及举例-1.时间复杂度 2.空间复杂度

此前须知:时间是累积的,空间是不累积的。判断运行的快慢不是用准确的运行时间来判断的,因为运行时间还与硬件有关,不够准确。所以我们引入 时间复杂度来判断一个程序的运行快慢、效率。一、时间复杂度时间复杂度的概念时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度

2022-04-20 22:15:03 988

空空如也

空空如也

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

TA关注的人

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