自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 问答 (6)
  • 收藏
  • 关注

原创 C语言——printf()计算参数顺序

`printf()`函数中的表达式参数的计算顺序是从右往左的,当所有表达式计算完后,将最后的值赋给`printf()`函数所有引用当前变量的位置,除了进行了后置自增/自减操作的位置。

2023-02-27 21:29:58 6454 1

原创 C语言项目——简单贪吃蛇

使用C语言+easyx绘图库,实现一款简单的贪吃蛇小游戏。

2023-02-20 09:14:28 3051 3

原创 C语言——简易扫雷

最终效果:目录1、总体逻辑2、地图布局3、埋雷4、打印地图5、扫雷5.1、将每个雷的位置显示到当前地图上5.2、计算出当前地图剩余的非雷数5.3、计算坐标周围雷的个数5.4、如果周围没有雷显示空白并且向外扩展6、总体1、总体逻辑扫雷的地图以9x9的大小为例,需要一个二维数组来当地图,并且要在这个地图上进行埋雷、扫雷操作,还要将周围的雷数显示出来,所以仅用一个二维数组是不够的,需要用两个:埋雷地图:雷层,埋在土的下面 扫雷地图:土层,铺在雷的上..

2022-02-18 16:09:27 3452 4

原创 C语言——简单三子棋

最终效果图:目录1、总体逻辑2、打印棋盘3、玩家下棋4、电脑下棋5、判断输赢6、总体1、总体逻辑棋盘为3x3的大小,玩家下棋通过键盘输入完成,电脑下棋通过生成随机数完成,在每一次下棋后,都要判断棋盘上的胜负情况:玩家连成三子:玩家胜; 电脑连成三子:电脑胜; 都没连成三子: 棋盘满了:平局 棋盘没满:继续 2、打印棋盘棋盘是3x3规格的,所以用一个3x3的二维数组来表示棋盘,并且需要初始化棋盘,此时棋盘上没有任何标记://棋盘长宽#de.

2022-02-18 14:57:43 3741

原创 Vmware安装Ubuntu16.4、Ubuntu里安装python3.9、Ubuntu安装PyCharm的过程及出现的问题的解决

目录1、VMware安装Ubuntu16.4虚拟机1.1、下载Ubuntu镜像文件1.2、安装Ubuntu虚拟机1.2、装Ubuntu系统 和 虚拟机工具1.3、解决Ubuntu不能全屏显示1.4、设置共享文件夹1.4.1、主机上的文件夹设置1.4.2、虚拟机上的设置1.5、解决/mnt下没有hgfs文件夹1.6、解决找不到共享文件夹的问题1.7、 解决重启后共享文件夹没有了的问题2、Ubuntu安装Python3.92.1、安装Python3.92.

2022-01-31 00:31:31 4937 8

原创 栈——匹配括号

用栈来判断输入的括号是否合法。()、[]、{}、{[()]}、{()[]{}}这些都是合法的;([)]、(]}这些都是不合法的。用一个栈,输入一行括号序列,挨个读取,当读到左括号时('('、'['、‘{’)就把他入栈,然后继续读取;当读到右括号时(')'、']'、‘}’)就出栈,判断出栈的括号是否与当前的右括号匹配。代码如下:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string,h.

2022-01-06 11:31:19 491

原创 数组模拟单链表

链表中每个结点只有两个部分:值域和指针域;值域存放的是自身的值,指针域放的就是下一个结点的地址,如果指针域用数组表示的话,也就是下一个结点的值的下标。所以用两个数组来模拟单链表,一个data数组表示值域(存的是结点的值),一个next数组表示指针域(存的是下一个结点在data数组里的下标)。如图:next数组的下标是当前结点的下标,next的元素对应着是当前结点的下一个结点的下标。比如:next[0]表示data[0]的下一个结点的下标是1,即a的下一个结点b在data数组里.

2022-01-06 11:18:59 470 2

原创 纸牌游戏——小猫钓鱼(队列、栈)

游戏规则:将一副扑克牌分成两份,每人拿一份,A先拿出一张牌放在桌上,然后B在拿出一张牌放在桌上并放在A的那张牌上面,就这样二人交替出牌。出牌时,如果某人打出的牌与桌上某张牌牌面相同,即可获得两张相同的牌及其中间所夹的牌,并依次放到自己手中的牌的末尾,当任意一人手牌全部出完时,游戏结束,对手胜。思路:首先A和B只有两个操作,出牌和赢牌,而出牌和赢牌操作就如同队列,一头出一头进,先进先出,所以定义一个队列的结构体来代表两人的手牌。//队列typedef struct queue { int.

2022-01-06 10:05:30 4474

原创 C语言——数字金字塔

金字塔一共有N层,每Ni层都有Ni个房间,每个房间都有数量不同的金钱,需要从金字塔顶端向下走,收集到最多的金钱,但是不能在一层中横向移动,只能向下一层的相对现在房间的右一个或下一个。输入:第一行输入一个整数N(1<=N<=100)后面N行输入每Ni行输入i个整数Nij(1<=Nij<=10000)输出输出最多的金钱例输入: 输出:29511 25 4 36 7 8 ...

2022-01-03 10:56:29 3648 3

原创 数据结构哈希表的基本操作(C语言)

设有一组关键字(19,14,23,1,68,20,84,27,56,11,10,79),建立一个哈希查找表。(1)哈希函数采用: H(key)= key % P(其中P=13),若发生冲突后,用链地址法解决冲突。(2)哈希函数采用: H(key)= key % P(其中P=13),若发生冲突后, 用线性探测再散列方法解决冲突。编写程序建立哈希查找表,运行程序在表中查找68,99。目录1、哈希表结点结构与哈希函数2、链地址法2.1、初始化2.2、插入2.3、查找3、线性..

2021-12-09 10:52:07 4607 5

原创 数据结构二叉排序树的 基本操作(C语言)

随机产生一组关键字,利用二叉排序树的插入算法建立二叉排序树,然后删除某一指定关键字元素。目录1、二叉排序树的结构2、插入结点3、查找结点4、创建二叉树5、删除结点6、完整测试源码1、二叉排序树的结构就是一般二叉树的结构。//二叉排序树typedef struct BST { int data; //值域 struct BST* left; //左孩子 struct BST* right; //右孩子}*BST;2、.

2021-12-09 10:21:06 6618 3

原创 数据结构无向图的操作(C语言)

目录//1、含邻接矩阵的图结构//2、创建邻接矩阵//3、打印邻接矩阵//4、邻接表的图结构//5、创建邻接表//6、打印邻接表//7、深度优先搜索//8、广度优先搜索//9、带主函数完整测试源码//1、含邻接矩阵的图结构用邻接矩阵来表示图://定义邻接矩阵的图结构typedef struct graph { elemtype data[N + 1];//存放顶点,不使用data[0]存放 int side[N + 1][N + 1];//邻接矩阵,同

2021-12-02 23:43:11 4431

原创 数据结构哈夫曼树的基本操作(C语言)

目录//1、树的结构定义//2、创建哈夫曼树//2、 根到叶子的路径//3、哈夫曼编码//1、树的结构定义#define n 4 //叶子结点个数#define m 2*n-1 //树的个数typedef struct HFTree { int weight; //权值 int parent; //双亲 int left; //左儿子 int right; //右儿子}*HF;HF hftree[m+1]; //下标从1开始计数,树的结点都是存在这个数组里的,通.

2021-11-10 21:43:12 2634

原创 NC128 接雨水问题

描述给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个柱子高度图,计算按此排列的柱子,下雨之后能接多少雨水。(数组以外的区域高度视为0)要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n)示例1输入:[3,1,2,5,2,4]返回值:5说明:数组 [3,1,2,5,2,4] 表示柱子高度图,在这种情况下,可以接 5个单位的雨水,蓝色的为雨水 ,如题面图。示例2输入:[4,5,1,3,2]返回值:2思路1:首先只有一根柱子或者...

2021-11-09 11:39:47 271

原创 NC13 二叉树的最大深度

描述求给定二叉树的最大深度,深度是指树的根节点到任一叶子节点路径上节点的数量。最大深度是所有叶子节点的深度的最大值。数据范围:0 \le n \le 1000000≤n≤100000,树上每个节点的val满足|val| \le 100∣val∣≤100.示例1:输入:{1,2}返回值:2示例2:输入:{1,2,3,4,#,#,5}返回值:3思路:用递归/** * struct TreeNode { * int val; * struct TreeNo..

2021-11-07 22:45:10 259

原创 数据结构二叉树的常规算法(C语言)

求二叉树叶子结点个数。 求二叉树的宽度。 求任意二叉树中第一条最长的路径长度,并输出此路径上各结点的值。 输出二叉树中从每个叶子结点到根结点的路径。目录//树的结构定义//求叶子结点个数//求树的宽度//求树的深度//求最长路径//求叶子节点到根节点的路径//树的结构定义//二叉树:typedef struct BTree { elemtype data; struct BTree* left; struct BTree* right;}*BT..

2021-11-07 20:02:51 2324 1

原创 数据结构线索二叉树的操作(C语言)

线索二叉树简单来说就是利用原来的指针域通过标记区分将每个节点的直接前驱和后继结点记录下来,这个记录下前后结点的过程就叫线索化,线索化后的二叉树就是线索二叉树。主要写了前序、中序、后序三种方法的线索化,前序和中序的两种遍历方式。目录//树结构定义及主函数//用队列初始化树//前序线索化//中序线索化//后序线索化//前序遍历线索二叉树//中序遍历线索二叉树//树结构定义及主函数typedef char ElemType; //定义元素类型#define.

2021-11-01 16:43:15 561

原创 C语言——常用字符串函数的总结与模拟实现

C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组 中。字符串常量 适用于那些对它不做修改的字符串函数。一、strlen函数1、函数介绍: 用途:求字符串的长度 格式:size_t strlen(const char* str); ( size_t代表无符号整形:size_t==unsigned int) 字符串以'\0'作为结束标志,strlen函数返回的是在字符串中的'\0'前面出现的字符个数(不包含‘\0’); 参数指向的字符串必...

2021-10-24 08:00:00 623 2

原创 C语言——str1的字母能否拼出str2

题目描述:给一些字母(str1),判断是否能用这些字母拼出给定的单词(str2)。示例1:输入:str1=ardhpyp,str2=happy输出:yes示例2:输入:str1=ardhypy,str2=happy输出:no思路:可以用数组把两个字符串存起来,然后用str2的每个字符和str1的每个字符比较,用一个count来计相等字符的个数,当count等于了str2的长度,说明str1的字母可以拼出str2。代码及详情如下:int main() {..

2021-10-23 23:28:01 295 1

原创 SQLZOO做题笔记

2、replace语法:replace ( string_expression , string_pattern , string_replacement ) string_expression 要搜索的字符串表达式。string_expression 可以是字符或二进制数据类型。 string_pattern 是要查找的子字符串。string_pattern 可以是字符或二进制数据类型。string_pattern 不能是空字符串 (''")。 string_replacement 替换字符.

2021-10-11 17:01:11 479

原创 NC72 二叉树的镜像

操作给定的二叉树,将其变换为源二叉树的镜像。源二叉树镜像后二叉树示例1输入:{8,6,10,5,7,9,11}返回值:{8,10,6,11,9,7,5}说明:如题面所示示例2输入:{}返回值:{}思路:需要交换每一个结点的左右儿子,如果结点为空就返回,如果是叶子结点也返回;可以用递归来遍历每一个结点,然后将其左右儿子交换。代码及详情如下:/** * struct TreeNode { * int val; * struct Tree...

2021-10-09 21:30:34 161

原创 NC117 合并二叉树

已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。例如:两颗二叉树是:合并后的树为示例1输入:{1,3,2,5},{2,1,3,#,4,#,7}返回值:{3,4,5,5,4,#,7}示例2输入:{1},{}返回值:{1}思路:需要遍历比较两棵树的结点,如果两个相同位置的结点都不为空,那么就将值相加;如果相同位置有一个结点为空,那么就返回另一个不为空的结点。代码及详情...

2021-10-08 22:47:36 134

原创 数据结构二叉树的基本操作(C语言)

要求数据域为字符的一棵二叉树用广义表形式输入,创建一个采用二叉链表存储的二叉树,并按广义表的形式输出这棵二叉树。 完成这棵二叉树的中序遍历的递归算法。 完成这棵二叉树的中序遍历的非递归算法。主要是写广义表形式的输入输出和递归于非递归的中序遍历。但我多写了其他操作,因为操作不熟,导致bug横生,日后再改,单个功能函数可供参考。目录//头文件//主函数顺序存储//主函数//初始化//打印//插入//删除//关系//修改//遍历链式存储...

2021-10-03 08:13:41 2974 2

原创 C语言——母牛的故事

思路:递归年数 n:1 2 3 4 5 6 7 8 牛数 f(n):1 2 3 4 6 9 13 19找规律:f(n)=f(n-1)+f(n-3)(n>3);代码如下:# include<stdio.h> int fun(int n){ if...

2021-10-01 23:32:56 973

原创 NC55 最长公共前缀

描述给你一个大小为 n的字符串数组 strs ,其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。示例1输入:["abca","abc","abca","abc","abcc"]返回值:"abc"示例2输入:["abc"]返回值:“abc"思路:求最长的公共部分,那么就从每一个字符串的第一个字符开始比较。将这个一维字符串数组想象成一列,依次比较每一个字符串的每一个字符,直到有不相同的字符出现或者到有一个字符串比较完了的情况出现就返回..

2021-10-01 17:12:20 299

原创 NC32 求平方根

描述实现函数int sqrt(int x).计算并返回 x 的平方根(向下取整)示例1输入:2返回值:1示例2输入:2143195649返回值:46294思路1:利用平方数的性质:连续n个计数相加的结果就是一个平方数:如:16=1+3+5+7,n=4,16=4*4。9=1+3+5,n=3,9=3*3;4=1+3,n=2,4=2*2。所以,用x连续减去这些奇数,减的次数就是这些奇数的个数,也就是...

2021-09-30 09:02:11 295

原创 NC33 合并两个排序的链表

题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。输入描述:给定两个单调递增的链表返回值描述:输出两个链表合成后仍满足非递减的性质的链表示例:输入:{1,3,5},{2,4,6}返回值:{1,2,3,4,5,6}思路1:非递归方法用指针来比较结点值的大小,比较一个就插入一个数据结构单链表的基础操作(C语言)代码如下:/** * struct ListNode { * int val; * st.

2021-09-29 08:01:44 213

原创 NC61 两数之和

题目描述:给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。例如:给出的数组为 [20, 70, 110, 150] , 目标值为90返回一个数组 [1,2] ,因为示例1输入:[3,2,4],6 返回值:[2,3]说明:因为 2+4=6 ,而 2的下标为2 , 4的下标为3 ,又因为 下标2 < 下标3 ,所以输出[2,3]示例2...

2021-09-27 23:34:20 373

原创 NC76 用两个栈实现队列

题目描述:用两个栈来实现一个队列,完成 n 次在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。数据范围: n<=1000要求:空间复杂度,时间复杂度O(1)示例:输入:["PSH1","PSH2","POP","POP"] 返回值:1,2说明:"PSH1":代表将1插入队列尾部 "PSH2":代表将2插入队列尾部 "POP“:代表删除一...

2021-09-27 08:43:51 150

原创 NC156 数组中只出现一次的数(其它数出现k次)

题目描述:给定一个长度为的整型数组arr和一个整数k(k>1)。已知中只有 1 个数出现一次,其他的数都出现k次。请返回只出现了 1 次的数。输入:[5,4,1,1,5,1,5],3返回值:4目录思路1:(暴力求解)思路2:(位运算)思路3:(排序法)思路4:(异或方法)思路1:(暴力求解)以每一个数去遍历整个数组,碰到相同的数就记下来,遍历完后,判断记下的数等不等于k,等于就判断下一个数,不等于就直接...

2021-09-26 10:14:52 639 1

原创 记C语言 &,|,^,>>,<<用法

目录1、&(按位与)2、|(按位或)3、^(按位异或)4、>>(右移操作符)5、<<(左移操作符)一个位运算应用例题:1、&(按位与)操作用法:有0为0,全1为1。2、|(按位或)操作用法:有1为1,全0为0。3、^(按位异或)操作用法:相同为0,相异为1。4、>>(右移操作符)操作用法:算术右移:右边丢弃,左边补原符号位(考虑符号位)。 逻辑右移:右边丢弃,左边补0(不考虑符...

2021-09-26 10:07:07 8656

原创 数据结构链串的基本操作(C语言)

关于顺序串的操作:​​​​​​​数据结构顺序串的基本操作(C语言)链串跟链表一样,就是数据域的类型只能是char型,其他都没啥大改动,可以直接看功能实现函数部分代码及详情如下:#include<stdio.h>#include<malloc.h>#include<assert.h>typedef struct LinkString { char data; struct LinkString* next;}String;//函数声明.

2021-09-25 14:18:48 2044

原创 NC22 合并两个有序的数组

给出一个整数数组和有序的整数数组 B,请将数组 B合并到数组A中,变成一个有序的升序数组注意:1.可以假设A数组有足够的空间存放B数组的元素,A和B中初始的元素数目分别为 m和n,A的数组空间大小为 m+n.2.不要返回合并的数组,返回是空的,将数组的数据合并到A里面就好了3.数组在[0,m-1]的范围也是有序的示例:输入:[4,5,6],[1,2,3]返回值:[1,2,3,4,5,6]说明:A数组为[4,5,6],B数组为[1,2,3],后台程序会预先将A扩容...

2021-09-24 08:33:30 265

原创 数据结构顺序串的基本操作(C语言)

串的定义串(string)是零个或多个字符组成的有限序列。一般记为:S="a1a2…an"(n≥0)其中S是串的名字,用双引号括起来的字符序列是串的值,但双引号是界限符,它不属于串,其作用是避免与变量名或常量混淆。ai(1≤i≤n)称为串的元素,它可以是任意字母、数字或其他字符,是构成串的基本单位,i是它在整个串中的序号。n是串中字符的个数,称为串的长度,表示串中所包含的字符个数。例如串S1="abcd",串的每一个元素为一个字母,其长度为4。而S2="12345",串的每一个元素为一个数字,其长

2021-09-23 13:57:26 5277

原创 NC4 判断链表中是否有环

判断给定的链表中是否有环。如果有环则返回true,否则返回false。思路:用快慢指针来解决,他要是个有环的链表,那么快慢指针肯定会在环中相遇,如果相遇就说明这个链表有环,返回true,如果没有相遇,说明这个链表没有环,返回false。如图:代码及详情如下:/** * struct ListNode { * int val; * struct ListNode *next; * }; */bool hasCycle(struct ListNode* head )...

2021-09-23 07:56:33 108

原创 NC68 跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。示例:输入:2 返回值:2说明:青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。因此答案为2思路:这一类题一般都能找到规律,然后通过规律来进行解答。这道题可以用两种方法来解决,一是解斐波那契的方法,二是递归。1、斐波那契数列解法:如上图,从最上面开始找规律,就能发现每次跳的次数能构成斐波那契数列(0,1,2,3...

2021-09-22 23:04:23 393

原创 NC38 螺旋矩阵

给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。思路:放入坐标平面观察,我们新建一个一维数组,用来按螺旋顺序存放数值,在定义上下左右四个边界,用来限制我们的循环,再定义一个变量用来代替二维数组的两个下标之一,每次将边界值存放到了一维数组,那么就要 改变方向 继续存储,比如上图,我从1开始存,存到了3,下一个就该往上存6,直到存到了9,然后又向左存...代码及详情如下:/** * * @param matrix int整型二维数组 * @p...

2021-09-22 15:22:30 638 1

原创 NC107 寻找峰值

山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。假设nums[-1] = nums[n] = -∞。思路1:就是判断一个值相对于两边相邻的值来说是否是最大值,可以用循环直接遍历整个数组,找到最大的索引的峰值。代码1及详情如下://a是数组,aLen是数组长度int solve(int* a, int aLen ) { int max;//定义一个最大值 ..

2021-09-21 23:09:06 182

原创 C语言——杨氏矩阵内的查找

杨氏矩阵:有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的.在这样的数组中查找一个数字是否存在。 要求时间复杂度小于O(N);思路:是个矩阵,涉及到每行每列,那么应该用二维数组来解决最适合;要求时间复杂度小于O(n),那说明不能 直接粗暴的用遍历的方法来实现。我们用 要查找的数 与 矩阵的右上角的数 来进行比较,从而进行查找。可以发现,每一个杨氏矩阵的右上角的数是一个特殊的数,他是所在这一行的最大值,又是所在这一列的最小值。所以我们拿要查找的数(k)和这个右..

2021-09-21 13:50:46 663 4

原创 NC101 缺失数字

从 0,1,2,...,n 这 n+1 个数中选择 n 个数,选择出的数字依然保持有序,找出这 n 个数中缺失的那个数,要求O(n) 或 O(log(n)) 并尽可能小。示例:"1 2 3 4 5 7",返回6 "1 2 3 4 5 6",返回7思路:因为是从零开始的有序数组,所以在不缺少值得情况下,下标和数值是相等的,所以直接判断下标和数值是否相等就行了,若不等,返回下标值。代码如下:/*a是数组,aLen是数组长度*/int solve(int* a, ...

2021-09-21 09:31:57 137

空空如也

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

TA关注的人

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