自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉搜索树的实现

二叉搜索树是左边根节点小,右边比根节点大。

2023-08-19 18:07:19 120

原创 在Linux下打包动静态库

动静态库

2023-08-16 08:44:44 150

原创 双向链表的实现

创建的是一个带头的双向链表,结构如下。

2022-12-14 20:58:25 179

原创 链表的快慢指针思想的解决

看接下来的一道题目1、给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。例子:[1,2,3,4,5] 返回中间节点3[1,2,3,4,5,6] 返回中间节点4我们该如何做呢,首先这里用到了快慢指针,就是让两个指针同时指向头节点,一个指针一个一个的走,一个指针是两个两个的走,看下面的代码下面这个例题时快慢指针的变形,类似于快慢指针2、输入一个链表,输出该链表中倒数第k个结点。输入:1,{1,2,3,4,5}返回值

2022-12-07 18:57:03 189

原创 用C语言实现单链表

在整个单链表的实现中,把数据的定义放到SList.h文件中,在实现每个函数写在SList.c中,同时创建一个主函数用于测试。单链表由数据域和指针域构成,数据域存储的这个节点的数据,指针域存储的是下一个节点的地址。在SList.c中写如下代码。

2022-11-11 20:30:19 303

原创 寻找单身狗和进阶版的单身狗

1.找单身狗 ,一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。编写一个函数找出这两个只出现一次的数字。2、一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。编写一个函数找出这两个只出现一次的数字。

2022-10-16 17:33:53 134

原创 动态内存管理

realloc - 调整内存空间的大小的/如果第一个参数是NULL,功能类似malloc。动态内存的开辟是在堆区进行内存空间的开辟,开辟到的是一块连续的空间。free - 释放动态开辟的内存空间的。malloc - 不初始化。calloc - 初始化为0。realloc的使用。

2022-09-24 22:02:21 204

原创 库函数memcpy的使用

根据这个运行结果发现,好像根本没拷贝过去,变成了不是我期望的值,这是为什么呢,仔细观察发现,向这种情况不能在从前向后拷贝了,应该是从后往前拷贝,但srcdest时可以从前往后拷贝,代码如下所示。这里就简单实现了,那么考虑一下,把1,2,3,4,5拷贝到3,4,5,6,7上面呢,如果还用刚刚实现的模拟函数会出现什么问题呢。把源头的指针的值拷贝到目标指针的值中,拷贝是按字节拷贝的,使用方法如下。库函数memcpy是内存函数的拷贝,memcpy的函数参数如下。

2022-09-14 22:14:03 916

原创 库函数strstr的实现

strstr是字符串的查找,就是找一个字符串中是否含有另一个字符串的函数,如果存在子字符串,返回的是第一个字符串的起始位置,看一下模拟实现。

2022-09-12 17:09:58 106

原创 库函数strcmp的模拟实现

前面字符串大于后面的字符串返回大于0的数字,相等返回0,前面的字符串小于后面的,返回小于0的数字。strcmp是字符串之间的比较,看官方说明。strcmp的模拟实现。

2022-09-12 16:14:49 287

原创 库函数strcat的实现

strcat是字符串追加的函数,字符串的追加是发现目标空间的‘\0’结束。模拟实现strcat函数。

2022-09-10 22:34:18 199

原创 库函数strcpy函数的实现

此时这里的arr1会变成是hello world\0x,但是打印出来的arr1是hello world。1、源字符串的拷贝是是以‘\0’结尾的,同时会将字符串中的’\0’拷贝过去。3、源字符串的空间必须足够大,如果字符串常量不够大,拷贝过去是会出错的。strcpy指的是字符串的拷贝,就是把源字符串拷贝到目标空间里面。这里此时是会出错的,因为p指向的常量字符串,所有不能这样写。2、目标空间的字符串必须是可变的,不能是常量字符串。4、模拟实现strcpy。

2022-09-10 22:08:35 978

原创 库函数strlen的模拟实现

看见这一段代码,这会输出哪个符号呢?正确的答案是“>”,因为strlen这个库函数返回的是无符号的整形,两个无符号数相减肯定得到的是无符号的整数,得到的数永远是大于0的数。1、对于strlen这个库函数来说,主要就是求字符串的长度的,无论何时,只要遇到‘\0’,求得的长度都会戛然而止,可以看一下例子。上面这个代码块遇到‘\0’就会停止,无论是str1还是str2求得的长度都为6,这两个的结果是一样的。2、在查阅得到的strlen的库函数中,库函数的范围类型为size_t。完整的模拟实现就到这里啦。

2022-09-10 21:04:47 215

原创 用冒泡排序的思想,模拟实现qsort函数

由于冒泡排序使用的话要规定类型,所以使用冒泡排序的思想,模拟实现qsort函数,但是我们要知道,qsort的底层逻辑是用快速排序实现的。冒泡排序有点局限性,在这里只能排序整形的数组,那如果我想使用结构体排序呢,或者我使用float类型进行排序呢,这里的冒泡排序就要重写。首先,要理解什么是冒泡排序,冒泡排序首先就是把无序的一组数,转化成为有序的,像冒泡一样,把排序好的数,一点点的冒出来,比如如下代码。为了更加的方便,使用库函数qsort进行排序。...

2022-08-28 19:47:57 124 1

原创 关于signed和unsigned进行整形提升所出现的问题

内存中存储这些变量都是以补码的方式进行存储,所以a、b、c在内存中的存储都是11111111这样的形势进行存储。为什么会出现这种结果呢,现在我来分析一下。

2022-08-21 10:14:53 131

原创 设计一段代码,判断在内存中是小端存储还是大端存储

则a在存储中的存储是 00 00 00 01,要不然a是小端存储,要不然a是大端存储,则a在内存中存储如下图所示。如图所示,如果知道a中的第一个字节是0还是1则就知道了a在内存中是大端存储还是小端存储。大端存储:数据中的低位保存在内存中的高地址中,数据中的高位保存在内存中的低地址中。小端存储:数据中的高位保存在内存中的高地址中,数据中的低位保存在内存中的低地址中。在visual studio中,输出结果是小端。假设int a=1;

2022-08-21 10:01:11 175

原创 原码,反码,补码的关系和大小端字节序存储的关系

下面讨论大小端字节序的存储问题,是跟数据在内存中的存储有关系,如下图所示。首先要知道第一位是符号位,0代表是正数,1代码是负数。在看如下代码之前,要知道原码,反码,补码之间的关系。负数的反码是符号位不变,其他位按位取反。给出一段代码,给出原码,反码和补码。关于负数的原码反码补码中的问题。正数的原码,反码,补码相同。负数的补码是反码+1。

2022-08-20 21:42:33 146

原创 用C语言倒置字符串

首先对I、like、beijing. 中的每个单词逆序,由此变成I、ekil、.gnijie变成这样之后,在对整个字符串进行逆序就行了。首先,逆置这个字符串,可以考虑单独的把每个单词都逆序一下,在对整个字符串进行逆序。要逆置这个字符串,有很多种方法,在此说一次比较巧妙的方法。考虑本题中的I like beijing.

2022-08-19 21:03:08 1073

原创 字符串数组长度的几种求法

第一种 根据库函数求出字符串的长度,采用这种方法要引入头文件string.h。第二种 采用计数器的方法求得字符串的方法。第四种 采用指针减指针的方法。第三种 采用递归的方法。

2022-08-06 13:42:41 8954 3

原创 采用C语言求出最大公约数和最小公倍数

求最大公约数和最小公倍数的时候,通常采用遍历的方式,这种方式虽然能求,但是如果要求的两个数比较大时,就会出现遍历时长过长的问题。于是想采用一种简洁的方式求出。比如:输入15和9这两个值,用辗转相除法的思想是这样的。此时3就是15和9的最大公约数。...

2022-08-05 08:47:50 233

原创 Wpf中的sqlite数据库的连接和迁移

首先你需要安装如图的三个第三方包,创建APi项目并且将此项目设置为启动项第二步,在你的APi项目里面创建context文件夹,在此文件夹下创建你所需要的类(数据库的表),在类中创建字段(数据库中的字段),如下如所示:第三步,创建一个和你API项目的相同的×××Context文件(文中用NoteRecorContext为例),在这个文件夹下声明DbSet集合,并创建对应的构造函数,在这个构造函数的参数里面进行DbContextOptions的传递,并****继承options,第四步,在appsetti

2022-06-11 08:45:56 763

原创 WPF使用prism框架进行页面跳转

第一步,要在nuget中下载几个第三方包第二步,将Api项目设置为启动项目第三步,创建Context文件夹,在文件夹下面创建对应的类(数据库中的表),类里的字段将是数据库中字段,例如第四步,在你文件夹下面的×××context(如NoteRecorContext)下面生成对应的Dbset集合,并在此构造函数中传入参数是DbConextOptions,此处一定要记得要继承option第五步,在appsettings.json中生成字符串连接第六步,进入到Startup.cs文件下,生成委托函数...

2022-06-10 09:44:07 2177

原创 三步翻转法逆序字符串

#include<stdio.h>#include<string.h>void reverse(char* left,char* right){char temp=0;while(left<right){ char temp=*left; *left=*right; *right=temp; left++; right--; }}int main(){char str[100]={0};gets(str

2021-09-28 22:26:31 85

原创 单链表之学生管理系统

#include<stdio.h>#include<stdbool.h>#include<stdlib.h>#include<string.h>enum Stu { add=1, del, modify, search, count1, show};typedef struct stu { char name[20]; char id[20];}st;typedef struct node { struct stu Data

2021-09-28 19:00:15 172

原创 数组下标越界可能出现的问题

可以看一下这个代码会出现什么问题:答案是在VS2013-VS2019中下面代码出现了程序死循环APP 中接收数据代码:#include<stdio.h>int main(){int i=0;int arr[10]={0};for(i=0;i<=12;i++){ printf("hehe\n");}return 0;}# 原因分析:1.i和arr是局部变量,存放在栈区,栈区的存储是先使用高地址在使用低地址。2.arr数组的存储是随着下标的增长,地址由低到高

2021-09-26 19:06:26 818

空空如也

空空如也

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

TA关注的人

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