自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树一文带你轻松学会

二叉树的那些事儿。

2021-11-28 21:29:59 1308 8

原创 堆的构建及应用~C语言简单实现

实现堆,堆的应用,TOP-K问题。

2021-11-22 21:07:09 1117 2

原创 队列~C语言~简单实现(附代码)

目录队列队列的概念及结构队列的实现初始化队列队尾入队列队头出队列获取队列头部元素获取队列队尾元素获取队列中有效元素个数检测队列是否为空销毁队列队列队列的概念及结构队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头队列的实现队列也可以数组和链表的结构实现,使用链表...

2021-11-03 19:12:31 2042 3

原创 栈~C语言~简单实现(附代码)

目录栈初始化栈入栈出栈获取栈顶元素获取栈中有效元素个数检测栈是否为空销毁栈一道经典的用栈实现的OJ题栈栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈的实现栈的实现一般可以使用...

2021-11-03 10:06:41 2819 11

原创 带头双向循环链表~C语言(附代码)~简单实现

带头双向循环链表是链表中用起来最方便的一种了. ...

2021-10-31 13:34:31 428 3

原创 复制带随机指针的链表

题目来源:力扣给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的深拷贝。深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。 新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够...

2021-10-27 12:02:03 189 9

原创 回文链表~链表分割~相交链表

回文链表描述对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:trueclass PalindromeList {public: bool chkPalindrome(ListNode* A) { if (A == NULL || A->next == NUL

2021-10-26 15:21:05 89 1

原创 不会吧,快慢指针的这些用法你还不会?

我们先来简单介绍一下何为快慢指针。快慢指针就是定义两根指针,移动的速度一快一慢,以此来制造出自己想要的差值。这个差值可以让我们找到链表上相应的节点。在单链表中,如果我们想要一次遍历解决问题,很多时候我们都会用到快慢指针解决问题。比如下面的这几个问题:在有序链表中寻找中位数判断单链表是否为循环链表找到单链表倒数第n个节点在有序链表中寻找中位数一般的思路是:先遍历一次链表,记录住一共有多少个节点,然后,再次遍历找寻中点。利用快慢指针,我们来看看这个问题会变成什么样。..

2021-10-26 00:05:15 193 1

原创 《环形链表》 带环? 面试常问的这些问题你可得把握住了

环形链表在很多面试时都有出现,这里面的一些细节更是面试官喜欢考察的重点,这些技巧和细节你可得把握住了,不然就让我替你们来把握。我们直接来看一道力扣上经典的环形链表题给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链

2021-10-25 17:04:48 93

原创 单链表~增删查改(附代码)~简单实现

链表的概念及结构概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。我们对一个结构体简单定义typedef int SLTDateType;typedef struct SListNode{ SLTDateType data; struct SListNode* next;}SListNode;对于一个单链表,我们一般需要实现的功能如下// 动态申请一个节点SListNode* BuySListNode...

2021-10-22 20:39:04 897 10

原创 顺序表实现~增删改查~代码(直接用)超详解~建议收藏

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:1. 静态顺序表:使用定长数组存储元素。2. 动态顺序表:使用动态开辟的数组存储。接口实现静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小,所以下面我们实现动态顺序表。具体我们要实现哪些功能呢?void SeqList..

2021-10-14 15:35:02 735 12

原创 20道面试智力题,你会做多少?

有 1000 瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问,在一个星期内找出有毒的药物,最少需要多少只小白鼠?最少需要10只小白鼠法1:(1)将药物1-1000编号,并用二进制表示出来 (2)老鼠用二进制编号 0000000001 0000000010 0000000100 0000001000 0000010000 00...

2021-10-11 23:47:22 633 5

原创 程序的编译和预处理~收藏了回家慢慢看

1. 程序的翻译环境和执行环境在ANSI C的任何一种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境,它用于实际执行代码。...

2021-10-11 18:31:14 800 13

原创 找单身狗~异或

一个整型数组nums里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]。思路找出一个只出现过一次的数字的问题处理方法就是找一个数字把里面所有的数字都异或一遍,利用异或两次等于没异或的特点来处理。那么如果有两个数字都...

2021-10-10 16:07:35 149 1

原创 文 件 操 作

今天我们来简单了解一下C语言中文件操作的具体内容与细节。1.为什么使用文件我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数...

2021-10-07 20:44:28 280 8

原创 可存储通讯录

前面我们已经学过了静态通讯录,动态通讯录,但这两种通讯录储存的信息在程序运行结束后就会自动消失,那么如何能够将信息储存起来呢?今天我们来介绍可储存通讯录接上次动态通讯录,我们需要增加的功能有两个:1.每一次打开通讯录要加载文件里储存的通讯录信息2.每一次关闭通讯录要将本次通讯录信息的更改传入文件中我们来看看具体的实现方式:1.我们在初始化的同时加载出文件信息//初始化通讯录​void InitContact(struct contact* con){ assert..

2021-10-06 16:54:45 320

原创 动态内存管理

1.为什么存在动态内存分配 我们先来看两个简单的例子int val = 20;//在栈空间上开辟四个字节char arr[10] = {0};//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点:1. 空间开辟大小是固定的。2. 数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不能满足了。这时候就只能试试动态存开辟了。..

2021-10-05 18:06:05 116

原创 动态通讯录简单实现

之前我们了解过静态通讯录的实现,但静态通讯录一次性创造了大量的内存,对一些用户来说未免有些浪费。今天我们来简单了解一下动态通讯录的简单实现,话不多说直接上代码。

2021-10-04 12:40:06 188 3

原创 谁是凶手?谁又是冠军?

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词:A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。int main(){int arr[4] = { 0 };int i = 0;int x ;int count; for (i = 0; i <= 3; i++) { arr[i] = 1; c..

2021-09-21 22:44:56 171 3

原创 自定义类型~结构体~位段~枚举~联合~超详解~一遍就会

结构体1.结构体类型声明 1.1 结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量 1.2 结构的声明struct tag{member-list;}variable-list;例如描述一个学生:struct Stu{char name[20];//名字int age;//年龄char sex[5];//性别char id[20];//学号};//分号不能丢1...

2021-09-20 16:41:26 385 12

原创 静态通讯录实现~超简单~包学会~学不会退学费

本期分享一个简单通讯录的实现目录 功能简易的菜单定义联系人信息,通讯录主函数添加联系人删除联系人查找联系人打印联系人修改联系人信息按名字进行排序清空联系人总体代码test.ccontact.hcontact.c 功能 添加联系人信息 删除联系人信息 查找联系人信息 修改联系人信息 显示所有联系人信息 清空联系人信息 按...

2021-09-19 23:18:37 500 7

转载 memset函数

memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。void *memset(void *s, int ch,size_tn);函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法[1]。memset()函数原型是extern...

2021-09-18 23:18:19 109

原创 常见字符串函数及模拟实现

本期主要介绍一些字符串相关函数及模拟实现1.函数介绍1.1 strlen1.2 strcpy1.3 stract1.4 strcmp1.5 strncpy1.6 strncat1.7 strncmp1.8 strstr1.9 strtok1.10 strerror1.11 memcpy1.12 memmove1.13 memcmp2.库函数的模拟实现2.1 strlen模拟实现2.2 strcpy模拟实现2.3 strcat模拟实现.

2021-09-17 16:59:21 395 7

原创 VS光标变方块?

这是由于不小心按到了Insert键解决方法:再按一下Insert就好了。因为插入键(insert)是一个状态表示键当你按倒它时,它会进入一个覆盖模式,在光标位置新输入字会替代原来的字;另一种为插入模式,新输入的字插入到光标的位置而不是替代,而且原来的字会相应的往后移。ps:在覆盖模式下,光标会变成方块而不是通常的竖线,也有一些在覆盖模式下还是竖线(较为少见)。...

2021-09-15 23:05:44 6349 3

原创 汉诺塔~C语言递归~学不会退学费

法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。...

2021-09-15 20:14:01 75

原创 字符串左旋

实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB看到这里你会想到用何种方法来解决这个问题呢?笔者这里列出了一些方法://设计循环使其可以旋1次,然后让他执行n次是一个最简单的思路:void leftRound(char * src, int time){ int i, j, tmp; int len = strlen(src); time %= len; //长度为5的情况下,旋转6、11、16...

2021-09-13 20:27:14 67

原创 不创建临时变量交换两个变量

很多时候我们在交换两个变量的时候通常都会创建一个临时变量来交换两个变量int main(){int a=1,b=0;int temp;temp=a;a=b;b=temp;}那如何能够不创建临时变量,同时交换两个变量呢?这里有两种方法:int swap1(int* x,int* y)//法一 缺点是*x=*x+*y 此时x的大小限制更多{*x=*x+*y;*y=*x-*y;*x=*x-*y;}int swap2(int*x,int*y)//法二{*x=*x

2021-09-13 19:57:11 122

原创 一道面试题教你轻松玩转指针

提到指针,真是让人头皮发麻,今天笔者来带你玩转指针。话不多说先看这道面试题 (注意细节)int main(){char *c[] = {"ENTER","NEW","POINT","FIRST"};char**cp[] = {c+3,c+2,c+1,c};char***cpp = cp;printf("%s\n", **++cpp);printf("%s\n", *--*++cpp+3);printf("%s\n", *cpp[-2]+3);printf("%s\n", cpp[-

2021-09-12 23:22:06 120 1

原创 序列判断,删除,合并

本期是三道关于序列的题,一些笔者一开始忽略的小细节#include<stdio.h>int main(){ int n; scanf("%d",&n); int a[50]={0}; for(int i=0;i<n;i++) { scanf("%d",&a[i]); } int i=0,j=0; while(a[i]<=a[i+1]) {i++;} whi.

2021-09-08 22:13:16 81 3

原创 轻松模拟实现qsort函数

qsort函数简单介绍qsort函数C语言编译器函数库自带的排序函数。是base所指数组进行排序。qsort函数包含在C 标准库 - <stdlib.h>中。函数声明void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))参数 base-- 指向要排序的数组的第一个元素的指针。 nitems-- 由 base 指向的数组中元素的个

2021-09-05 22:27:43 137

原创 数据的存储~详解

1.数据的基本类型整型家字符型 char unsigned char signed char短整型 short unsigned short [int] signed short [int]整形 int unsigned int signed int 长整形 long unsigned long [int] signed long [int]...

2021-09-05 00:19:26 224

原创 函数栈帧的创建与销毁

目录什么是函数栈帧什么是函数栈帧 栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。从逻辑上讲,栈帧就是一个函数执行的环境:函数参数、函数的局部变量、函数执行完后返回到哪里等等。实现上有硬件方式和软件方式(有些体系不支持硬件栈)首先应该明白,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(低地址)。注意:EBP...

2021-08-11 02:01:35 126

原创 扫雷小游戏用C语言简单实现

设计思路1. 定义两个二维数组,一个存放炸弹信息,一个隐藏信息后向玩家展示。2. 玩家每一次选择都要判断是否踩到炸弹,如果踩雷,将结束游戏,否则继续游戏。3.玩家每一次判断后要将新棋盘展示给玩家,且将该位置附近雷的个数展示出来。4.最后如果玩家找到所有非雷区时,玩家获胜。首先,我们设计一个简单的主函数 方便玩家自由选择进入游戏与退出游戏int main(){ int input = 0; srand((unsigned int)time(NUL...

2021-08-01 01:06:02 670 2

原创 三子棋小游戏C语言简单实现

设计思路1. 二维数组实现棋盘2. 设计并打印出棋盘3. 玩家先手4. 每一次下棋后判断输赢首先我们写出游戏的主函数,让玩家能自由选择开始游戏或者退出游戏。接下来我们看看游戏该怎样具体实现....

2021-07-30 02:28:35 138

空空如也

空空如也

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

TA关注的人

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