- 博客(114)
- 收藏
- 关注
原创 指针大集合版(重新整理版本)
目录指针概念字符指针指针数组数组指针函数指针函数指针数组函数指针数组的指针回调函数指针概念指针是一个变量,用来存放地址,地址唯一标识一块内存地址 指针的大小是固定的4/8个字节(32位平台/64位平台) 指针式有类型的,指针的类型决定了指针的解引用后所能访问的内存空间以及决定指针的步径。 指针的运算字符指针在指针的类型中我们知道有一种指针类型为字符指针 char*char ch = 'w';char *p = &ch;下面有一个经常会.
2021-11-13 19:31:59 1158
原创 先到先服务 短作业 时间片轮转算法
首先说一下这三个算法的思想吧FCFS是最简单的调度算法,既可以用于作业调度 ,也可以用于程序调度,当作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,优先从后备队列中,选择一个或多个位于队列头部的作业,把他们调入内存,分配所需资源、创建进程,然后放入“就绪队列”,直到该进程运行到完成或发生某事件堵塞后,进程调度程序才将处理机分配给其他进程。SJF算法是以作业的长短来计算优先级...
2019-11-28 20:06:48 935
原创 Linux编译器gcc使用
目录1、预处理 (进行宏替换)2、编译 (生成汇编)3、汇编 (生成机器可识别代码)4、链接 (生成可执行文件或库文件)预处理:预处理阶段,编译器会对源代码中的头文件以及预处理语句进行分析,生成.i为后缀的预处理文件预处理的指令是以#开头的代码行gcc -E hello.c -o hello.i选项 "-E" 该选项的作用是让gcc在预处理结束后停止编...
2019-11-21 15:37:27 1116
原创 有以下结构: struct student{ char name[32]; int age; int class; bool sex; }; 写出函数,用函数重载的方式编写程
#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <cstdio>using namespace std;struct student{ char name[32]; int age; int clas; bool sex;};int countName(student * src,...
2019-08-28 20:08:25 5263
原创 栈和队列的模拟实现
目录1、栈1.1栈的概念以及结构1.2栈的实现2、队列2.1队列的概念及结构2.2队列的实现1、栈1.1栈的概念以及结构栈:是一种特殊的线性表,它只允许在固定的一端进行插入和删除操作。数据插入和删除操作的一端为栈顶,另一端为栈底。栈中的数据遵循先进先出(LIFO)原则。说明:这里提到的栈,是我们自己建立的一种数据结构,并不是内存区域中的栈区,虽然名字都叫做栈,但是两者是不一样的。进栈出栈的过程如下图:1.2栈的实现栈的实现一般可以使用数组..
2022-04-15 09:26:24 1010
原创 LeetCode第21天--有效括号
题目描述:给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例:输入:s = "()" 输出:true输入:s = "([)]"输出:false解题思路:看到这种题,我们需要用栈的先进后出的思想来解决,当目前的符号是'('、‘{’、'[',我们只需要让这些符号入栈,并将栈顶做标记,当出现反括号时,我们需要将出现的符号和栈顶符号比较...
2022-03-26 11:55:30 1307
原创 带头双向循环链表(C语言实现)
带头双向循环链表概念及结构概念:带头双向循环链表结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了。带头双向循环链表的实现List.h代码实现#pragma once#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef int LTDataTyp
2022-03-26 10:31:07 1560
原创 环形链表题
目录链表是否成环快指针能否追赶上慢指针求链表环的入口点链表是否成环题目描述:给你一个链表的头节点head,判断链表中是否有环。如果链表中存在环,则返回true。 否则,返回false。输出:true输出:false解题思路:首先定义两个快慢指针,从头节点开始出发,快指针每次走两步,慢指针每次走一步,当快指针进入环后,慢指针走了进入环之前的1/2路程,当慢指针进入环后,开始追赶模式。快指针追赶慢指针。当快指针和慢指针指向同一位置时,...
2022-03-20 16:22:19 522
原创 LeetCode第20天--相交链表
题目描述给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。示例:输出:8输出:2解题思路:首先将两个链表遍历一遍,并且统计它们的长度,求出两个链表的长度差,让长的链表先走长度差步,然后两个链表一起走并判断它们的地址是否相等即可。代码实现:struct ListNode *getIntersectionNode(struct ListNode *headA, struc...
2022-03-19 20:29:39 806
原创 LeetCode第19天--链表分割
题目描述现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。解题思路:首先,先定义两个新的头节点,分别用来保存小于x的节点和不小于x的节点,遍历原链表,当前节点小于x的时候,将它放在定义的新的节点后,当前节点不小于x的时候,将它放在定义的另一个新的节点后。最后将全部小节点的尾链接上大节点的头即可。画图分析:代码实现:ListNode* partition(ListNo.
2022-03-19 16:53:34 980
原创 LeetCode第18天--链表中倒数第k个节点
题目描述输入一个链表,输出该链表中倒数第k个结点。示例输入:1,{1,2,3,4,5}返回值:{5}解题思路:首先定义两个指针变量,同时指向head,让其中一个指针先走k步,接下来让两个指针同时走,直到快指针指向的为空即可停止,慢指针所指向的值即为倒数第k个节点。代码实现struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ){ struct ListNode *fast = p..
2022-03-19 10:27:10 1020
原创 LeetCode第17天--链表的中间结点
问题描述给定一个头结点为head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例输入:[1,2,3,4,5] 输出:返回的结点值为 3输入:[1,2,3,4,5,6] 输出:该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点 4解题思路一:首先,先统计出链表中节点的个数,然后,从头节点进行遍历,遍历到节点总数的一半即可。代码实现:struct ListNode* middleNode(struct ListNode* head...
2022-03-17 15:23:04 256
原创 LeetCode第16天--反转链表
问题描述给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]输入:head = [1,2]输出:[2,1]输入:head = []输出:[]解题思路 :我们需要三个指针变量,首先prev指向NULL,cur指向head,tmp指向cur->next,tmp在这里的作用及就是保存cur的下一个节点。我们每次操作只需要变换cur指针的指向,使它指向前边的节点即可,前边的节点用p...
2022-03-16 16:44:05 699
原创 单链表(C语言实现)
链表的概念及结构概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。如图:注意:从上图可以看出,链式结构在逻辑上是连续的,但在物理上不一定连续。 现实中的节点一般都是从堆上申请出来的 从堆上申请的空间,是按照一定的策略来分配的,两次申请的空间可能连续也可能不连续。链表的实现无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等。SList.h代码实现#pra
2022-03-16 16:13:32 1304
原创 LeetCode第15天--移除链表元素
移除链表元素问题描述给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。示例输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]输入:head = [], val = 1输出:[]输入:head = [7,7,7,7], val = 7输出:[]解题思路:一共分为三种情况第一种是正常情况:定义两个指针变量,cur=head头节点,p...
2022-03-15 15:26:05 1319
原创 顺序表(C语言实现)
目录概念及结构顺序表分类接口实现概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删改查。顺序表分类静态顺序表:使用定长数组存储 动态顺序表:使用动态开辟的数组存储接口实现静态顺序表只适应于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。所以现实中基本都是使用动态顺序表,根据需要动态分配空间大小,所以下面我们实现动态顺序表。SeqList.h代
2022-03-14 17:43:39 1105
原创 LeetCode第14天--移除元素
移除元素问题描述给你一个数组 nums和一个值 val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。示例输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]输入:nums = [0,1,2,2,3,0,4,2], val = 2输出:5, nums = [0,1,4,0,3]解题思想:设置两个变量i,j。当i指向的值...
2022-03-13 23:07:47 471
原创 LeetCode第13天--轮转数组
轮转数组问题描述给你一个数组,将数组中的元素向右轮转k个位置,其中k是非负数。示例输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释:向右轮转 1 步...
2022-03-13 20:52:09 104
原创 LeetCode第12天--数组中数字出现的次数
数组中数字出现的次数问题描述一个整型数组nums里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]解题思路用异或方法进行解决,我们都知道要是有一个数只出现一次,根据异或的原理,那么我们将所有数全部异或,则结果就为出现一次的数...
2022-03-13 18:58:33 525
原创 LeetCode第11天--消失的数字
目录消失的数字解题思路:等差数列法异或方法消失的数字问题描述:数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?示例:输入:[3,0,1]输出:2输入:[9,6,4,2,3,5,7,0,1]输出:8解题思路:等差数列法用等差数列公式S=(n(n+1))/2。将前n个数的和用等差数列公式计算出,然后用总合减去数组中出现的每一个数,结果即为缺失的数字。代码实现如下:int...
2022-03-13 18:30:41 1075
原创 LeetCode第十天--实现strstr()
问题描述:实现strStr()函数。给你两个字符串haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回-1 。当needle是空字符串时我们应当返回 0。示例:输入:haystack = "hello", needle = "ll"输出:2输入:haystack = "aaaaa", needle = "bba"输出:-1输入:haystack = "", needl...
2021-12-16 17:49:07 481
原创 LeetCode第九天--移除元素
题目描述:给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返...
2021-12-15 19:53:08 82
原创 LeetCode第八天--删除有序数组中的重复项
题目描述:给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例:输入:nums = [1,1,2]输出:2, nums = [1,2]解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, .
2021-12-09 09:59:24 328
原创 LeetCode第七天--合并两个有序链表
题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]解题思路:解决这个问题,我们首先要重新定义一个指针,判断list1和list2所指向的节点的值的大小,比较小的那个就将其链接在定义指针的后边,依次判断完两个指针,当一个指针指向nullptr的时候,直接将另一个指针全部链接在定义指针的后边即可。代码实现如下:cla...
2021-12-08 08:21:17 310
原创 LeetCode第六天--有效括号
题目描述:给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例:输入:s = "()[]{}"输出:true输入:s = "([)]"输出:false解题思路:在解决这个问题的时候,我们通常要引入栈来辅助我们解决问题。栈的特性是先进后出,最后进来的数永远是在栈顶的,也是我们可以取到的数,正好就和有效括号这个问题相适应。解题思路如下图:...
2021-12-07 15:33:36 401
原创 LeetCode第五天--最长公共前缀
题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。输入:strs = ["flower","flow","flight"]输出:"fl"输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。解题思路:首先我们对每一个字符串进行遍历,判断所有字符对应的下标字符是否相等,如果相等,则继续遍历,如果不相等则直接返回第一个字符从起始位置到遍历不相等结束的位置即可,返回的就是我们最长公共前缀。..
2021-12-06 09:26:23 64
原创 LeetCode第四天--罗马数字转整数
题目描述:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做II,即为两个并列的 1 。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而...
2021-12-05 10:08:18 143
原创 LeetCode第三天--回文数
题目描述:给一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是输入:x = 121输出:true输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。解题思路:看到这个题,我们可以先判断这个数是大于0还是小于0,因为从回文数定义来看,小于0的数不可能是回文数,所以我们只用判.
2021-12-04 10:29:01 732
原创 LeetCode第二天--整数反转
题目描述:给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−231,231− 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例:输入:x = 123输出:321输入:x = -123输出:-321解题思路:看到这个题,我们可以先将数字进行反转,反转很好实现,每次取余就可以,如下图进行分析:如果不考虑溢出的问题,这个题是很容易就解出来的,但是由于考虑溢出问题...
2021-12-03 09:17:39 195
原创 LeetCode第一天--两数之和
题目描述:给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。解题思路:一组数据设置两个变量,首先先从第一个数据开始,后边的数据...
2021-12-02 17:04:23 80
原创 动态内存管理
目录为什么存在动态内存分配动态内存函数介绍常见的动态内存错误c/c++程序开辟内存为什么存在动态内存分配我们首先来看看我们已经知道的内存开辟方式:int val =20; //在栈空间上开辟四个字节char arr[10] = {0};//在栈空间上开辟10个字节的连续空间上边代码中开辟空间有两个特点:空间开辟大小是固定的。 数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况,有时候我们需要的空间大小在程序
2021-11-26 17:53:12 117
原创 自定义类型:结构体、枚举、联合
目录结构体结构体的概念结构体的声明特殊的声明结构体的自引用结构体变量的定义和初始化结构体内存对齐修改默认对齐数结构体传参位段位段的内存分配位段的跨平台问题枚举枚举的定义枚举的优点联合(共用体)联合类型的定义联合的特点联合大小的计算结构体结构体的概念结构体是C语言中一种重要的数据类型,该数据类型由一组称为成员(或称为域,或称为元素)的不同数据组成,其中每个成员可以具有不同的类型。 结构体通常用来表示类型不同但是又相关的.
2021-11-24 19:09:59 200
原创 字符函数和字符串函数(总结集合)
目录求字符串长度strlen长度不受限制的字符串函数strcpystrcatstrcmp长度受限制的字符串函数strncpystrncatstrncmp字符串查找strstrstrtok内存操作函数memcpymemmove求字符串长度strlensize_t strlen(const char *str)字符串以'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包含’\0') 参数指向.
2021-11-18 18:11:54 307
原创 boosting算法
目录boosting概念AdaBoost算法步骤AdaBoost训练过程boosting代码实现boosting概念AdaBoost,它的自适应在于:前一个基本分类器被错误分类的样本的权值会增大(即下次被抽样的概率增大),而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在每一轮迭代中,加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数才确定最终的强分类器。在直觉上:把学习器的重点放在容易出错的样本上,可以提高学习器的性能。如下图
2021-11-13 20:29:34 392
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人