- 博客(62)
- 收藏
- 关注
原创 linux下动静态库的制作,打包,以及模拟第三方库使用
linux下动静态库的制作以及使用,以及自己模拟制作第三方库,以及模拟使用第三方库。
2022-10-29 16:41:52
1460
3
原创 linux 初学,环境搭建及用户管理
1,环境搭建这里直接使用用服务器,可以买一个华为云,百度云,阿里云等等(学生买的话价格不是很贵,一百多到几百的都可以,目前学习的话就买一个丐版就好了,也就是最低配版本的,一核的就完全够用了),通过xshell软件进行远程登录。2,登录双击列表输入你买的账号密码进行登录:注意第一次登录都是root账号,也就是超级管理员权限,最高缺陷登录,之后我们可以创建子账号,以后我们就可以用子账号登录了,这也是公司的常态,一般在公司是不会有root账号的权限的。3,用户管理创建用户:
2022-05-14 14:37:50
323
原创 海量数据排序—外排序之归并实现外排序排序
一,什么是外排序1.其实外排序就是在文件中进行排序,那我们知道在文件中访问数据有很多限制,比如不可以随机访问啊,只能通过文件指针访问啊,等等。那我们为什么还要在文件中排序也就是外排序呢?【1.】数据量过大,比如海量数据:举个例子,比如又100亿整形需要你排序,我们算一算100亿个整形放在内存中要多大空间呢。1KB=1024byte;1MB=1024KB:1G=1024MB;我们知道一个整形是4个字节,也就是4byte;1024*1024*1024大概估计是10亿的样子,也就是说1
2022-04-24 20:38:34
909
1
原创 数据结构八大核心排序,详细过程。
目录一,排序种类1.直接插入排序2.冒泡排序3.希尔排序4.快排(1.)快排单趟排序三种写法【1】hoare版本单趟排序【2】挖坑法【3】前后指针法 最新的写法,写起来最简单,最不容易出错(2.)快排【1.】快排递归【2】快排非递归【3】快排的优化一三数取中优化【4】快排的优化二小区间优化5.归并排序(1.)归并排序递归写法【1】归并排序子函数【2】归并排序(2.)归并排序循环写法6.选择排序7.堆排序...
2022-04-23 18:51:16
2038
原创 堆和堆排序的实现
目录一,堆的实现1.结构2,函数接口3,接口实现4,代码链接二,堆排序的实现1.建堆2,选择排序思想,只不过是用堆来选择。一,堆的实现1.结构//堆的底层是一个完全二叉树,所以说我们用数组实现是不会有空间的浪费的。//物理上是一个数组,但是逻辑上可以把他想象成一颗二叉树。typedef int HPDataType;typedef struct Heap{ HPDataType* a; size_t size; s...
2022-04-10 19:16:48
709
1
原创 数据结构栈和队列的实现。
目录一,结构1.栈结构2.队列结构二,函数接口1.栈的函数接口2.队列的函数接口三,函数接口的实现1.栈的接口实现(1) 初始化(2)销毁(3)插入数据(4)删除数据(5)判空(6)返回栈元素个数(7)返回栈顶数据2.队列的接口实现(1)初始化队列(2)销毁队列(3)插入数据(4)删除数据(5)判空(6)返回队列元素个数(7)返回队头数据(8)返回队尾数据三,代码链接一,结构1.栈结构t
2022-04-10 18:38:14
564
原创 atoi;字符串转整形的模拟实现
1.代码://1. 空指针//2. 空字符串//3. 空白字符//4. + -//5. 非数字字符//6. 超大数字////#include<LIMITS.H>#include <ctype.h>#include<assert.h>//#include<stdlib.h>enum State{ INVALID,//非法 VALID //合法};//合法情况只有一种,二非法情况有很多,所以我们先默认初始化设置
2022-02-26 23:22:27
156
原创 C语言实现通讯录,进阶版,动态开辟空间,简单文件操作,支持增删查改,排序,可以保存数据到文件,程序运行自动读取数据到程序等。
目录代码注释很详细,后面附带有代码链接哦!!!一,依然是为了代码规范,写在了三个文件中二.test.c三.Contact.h四.Contact.h1.初始化的同时时候把数据从文件加载到程序中2.加载数据到文件3.从文件中加载之前保存到文件的数据到程序六.成品展示1.输入展示2.删除展示3.修改展示4.排序展示,按照年龄排序六,代码链接代码注释很详细,后面附带有代码链接哦!!!一,依然是为了代码规范,写在了三个..
2022-02-19 20:41:41
641
原创 C语言memcpy和memmove的实现。
一,memcpy实现:void* my_memcpy(void* dest, void* src, size_t n){ void* ret = dest; assert(dest && src); //保证数据的有效性。 while (n--) { *(char*)dest = *(char*)src; dest = (char*)dest + 1; src = (char*)src + 1; } return ret;}我们来分析一下:1.函
2022-01-25 00:02:44
2175
原创 字符串倒置:不是逆置哦。
注意:倒置是以单词为单位的“逆置”,不是字符串的逆置;思路:第一我们把每个单词分别逆置,然后再把字符串整体进行逆置;、思路讲完我们上代码:重点是靠考虑单词结束表中,数组的越界要处理好。#include<stdio.h>#include<string.h>void reverse(char* left,char* right){ while(left<right) { char t=*left; *...
2021-11-28 20:46:18
576
原创 c语言数据存储:
一. 整形在内存中的存储:原码、反码、补码计算机中的整数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位1.负整数:原码,反码,补码,三种表示方法各不相同。原码直接将二进制按照正负数的形式翻译成二进制就可以。反码将原码的符号位不变,其他位依次按位取反就可以得到了。补码反码+1就得到补码。2.正整数:原、反、补码都相同。对于整形来说:数据存放内存中其实存放的是补码。计算机内部整数的运算实际上也是补
2021-11-27 13:44:24
262
原创 打印杨辉三角
方法一:void yangHuiTriangle(int n){ int data[30][30] = { 1 }; //第一行直接填好,播下种子 int i, j; for (i = 1; i < n; i++) //从第二行开始填 { data[i][0] = 1; //每行的第一列都没有区别,直接给1,保证不会越界。 for (j = 1; j <= i; j++) //从第二列开始填 { data[i][j] = data[i - 1][j]..
2021-11-24 19:07:08
257
原创 数组越界奇葩现象:初闻不知曲中意,再闻已是意中人。
数组越界死循环奇怪问题:这段极其简单的代码会造成什么样的结果呢。我们来简单分析一下:1.局部变量定义在栈区,而栈区的内存使用一般是优先使用高地址。2.a[12]的地址与i的地址一样,最后一次i被改成0了。程序就死循环了。3.由于发生了死循环,即使越界了也不会报错,程序无法停下,无法报越界错误。4,要按照不同的编译器来考虑越界几个会越界到i,不同编译器情况稍有不同。5,在release版本中,编译器会主动优化,不会形成死循环,但打印结果是不对的,会打印13个hello bit**.
2021-11-21 13:36:50
264
原创 扫雷小游戏,初级。
核心思路:1,我们准备俩个棋盘,这里的棋盘存储数据我们使用二维数组,第一个棋盘时用来布置雷,排查雷,第二个棋盘用来给用户展示他排查到的雷。2,我们排查到非雷时需要计算出非雷坐标周围有几个雷,但当我们遍历坐标周围时,在边缘情况就会造成越界。所以我们直接把棋盘设置比扫雷区域扩大“一圈 ”,比如我们要9*9棋盘,我们就开一个11*11的棋盘,只用中间9*9就好了。接下来就是代码实现了:一样,为了代码清晰直观,方便后期维护修改,我们把测试,声明,函数实现分在三个文件里。上带码:test....
2021-11-20 21:40:24
2306
原创 c语言小知识:
下面哪个是指针数组:( A)A. int* arr[10];B.int * arr[];C.int **arr;D.int (*arr)[10]; (数组指针)指针数组是一个数组,该数组的每个元素是一个指针A:正确,定义了一个数组,该数组中有10个元素,每个元素都是int*的指针类型B:错误,编译失败,定义数组时,要给出空间的大小,如果没有给时,必须要给出初始化结果C:错误,定义了一个二级指针D:错误,*和arr先结合,说明arr不是数组。实际上arr是一个指针,一个..
2021-11-16 22:37:08
633
原创 c语言细节。
题目:答案:细节:1.在%c的前面写一个空格会消化掉前面所有的空白字符,然后读取一个字符。,然后读取一个字符2.在%c的后边发给一个'\n',其实在输入时候就会消化掉这个\n字符,不会为下次留下空白字符的隐患...
2021-11-15 23:06:15
346
原创 c语言细节。
上图:答案: > 解释·:C语言中,0为假,非0即为真。全局变量,没有给初始值时,编译其会默认将其初始化为0。i的初始值为0,i--结果-1,i为整形,sizeof(i)求i类型大小是4,但是sizeof的返回值类型实际为无符号整形,因此编译器会自动将左侧i自动转换为无符号整形的数据(类型转换),-1对应的无符号整形是一个非常大的数字,超过4或者8,故实际应该>。...
2021-11-15 22:34:00
1202
原创 看完没收获来砍我。可以重点看,最剑指 Offer 40小的k个数(按照不同的实际情况采用不同的算法)
目录题目:1,排序算法,采用效率好的堆排序。2,采用堆来计算。3,特使要求下,灵活使用堆来解决实际问题。(1)提出新的现实要求:如果现在由100亿个数据,我们要找出他的最小前100呢。*****************如果采用方法2,不合理之处**********************方法3:题目:1,排序算法,采用效率好的堆排序。我们直接使用堆排序。c语言的话,我们可以写一个向下调整算法,写一个堆排序算法。int* getLeastNu.
2021-11-14 18:08:05
477
7
原创 三子棋小游戏,目前还不够智能。
以下时代码:代码内部注释非常全,就解释了。玩游戏过程,电脑时随机下的,非常的不智能:哎test.c(测试部分)#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void meau(){ printf("**************************\n"); printf("***1,paly*****0,exit******\n"); printf("**************************\n");.
2021-11-08 11:07:53
2607
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人