自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【数据结构】二叉树链式结构的实现

在二叉树已经建立的情况下,利用递归的思想,二叉树链式结构有三种重要的遍历:前序遍历、中序遍历、后序遍历。

2023-06-20 10:27:08 918 4

原创 【数据结构】队列

本文用C语言细致地讲了数据结构中的队列的概念以及队列如何实现,通过阅读本文,读者能够更容易的理解什么是队列。

2023-02-11 15:45:41 541

原创 【数据结构】栈

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。**进行数据插入和删除操作的一段称为栈顶,另一端称为栈底**。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。

2023-02-10 22:38:55 629

原创 【数据结构】建堆的方式、堆排序以及TopK问题

我们知道,堆是二叉树的一种,二叉树的建立是借助结构体与数组完成的(通过在结构体中创建动态开辟的数组变量储存堆中的元素)。除了借助结构体外,有没有其他方式,直接建堆。总结: 经由上述可知,向下调整建堆的时间复杂度与向上调整建堆的时间复杂度相比,向下调整建堆所需时间更少,因此在没有结构体构造堆的情况下,选择向下调整直接建堆。

2022-12-05 15:32:36 1183

原创 【数据结构】树的概念与堆的实现

树是一种非线性的数据结构,它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做树是因为它看起来像是一颗倒挂的树,也就是说它是根朝上,而叶朝下的。树结构相对线性表就比较复杂了,要存储表示起来就比较麻烦了,既要保持值域,也要保存节点和节点的关系,实际中树有很多种表示方式如:双亲表示法、孩子表示法、孩子双亲表示法以及孩子兄弟表示法等。这里着重介绍最常用的孩子兄弟表示法(左孩子右兄弟)。一颗二叉树是节点的一个有限集合,该集合:1.或者为空2.或者由一个节点加上两颗分别被称为左子树和右子树的二叉树组成

2022-12-04 19:49:40 554 2

原创 【数据结构】顺序表的概念及实现

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采取数组存储。在数组上完成数据的增删查改。顺序表一般可分为:1.静态顺序表:使用定长数组存储元素。2.动态顺序表

2022-12-03 15:21:04 692

原创 【数据结构】带头双向循环链表的实现

1. 双向循环链表有一个头节点,这个头节点不存储数据,只起到标记头部的位置。2. 链表中某一节点的指针域分为两部分,一部分储存下一节点的地址,另一部分储存上一节点的地址。3. 通过指针域,链表的头节点与尾节点相连,形成循环。...

2022-08-15 19:25:10 417 12

原创 【数据结构】链表-增删查改

链表是一种物理结构上非连续、非顺序的存储结构,数据元素的逻辑是通过链表中的指针链接次序实现的。链表创建完成后不需要初始化,链表过于简单,就是由一个个的结构体通过指针域串起来的,在不存储数据的时候,可以没有任何节点,即没有结构体,在主函数中将指向结构体的指针置为空就行了。......

2022-07-31 22:43:17 2505 9

原创 牛客网刷题1【最小步数Fibonacci数列】

因此,Fibonacci数列就形如0,1,1,2,3,5,8,13,…,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。...

2022-07-21 16:40:51 247 1

原创 动态内存管理2之柔性数组

c99中,结构体中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员。图示第一种方式是用柔性数组的方式,第二种方式没有用柔性数组,但是最终达到的效果都是一样的,为什么还有柔性数组这种东西。上述代码没有用到柔性数组,柔性数组与之相比,柔性数组的优点在哪?...

2022-07-20 18:33:50 210

原创 长篇详解C语言动态内存管理

数组在声明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不能满足了。这时候就只能试试动态内存开辟了。malloc函数是动态内存开辟函数。动态内存开辟的空间在使用完毕以后,一定要释放,free函数就是释放函数。...

2022-07-17 16:10:31 320 8

原创 C语言实现通讯录

通讯录中储存了一个人的姓名、年龄、性别、电话号码、居住地址等信息。通讯录可以对一个人的信息进行添加、删除、查找、修改等操作。也可以对多人的信息按某条件(如年龄、姓名)进行排序操作。......

2022-07-08 17:37:15 3200 13

原创 c语言自定义类型:结构体、枚举、联合

c语言中除了有整型、字符型等基本类型外,还有自定义类型:结构体类型、枚举类型、联合类型、数组,今天主要讲前三种。

2022-07-04 19:52:15 490 14

原创 字符串函数和内存操作函数

1.创建实现某种功能的函数时,先分析需求,再一步步去实现需求2. 为了提高代码的可执行性和可靠性,函数参数的设置要具有包容性,同时根据需求,确定函数的返回值类型;有时为了保证指针参数所指向的内容不变,要用const修饰参数;函数内部用断言函数assert避免传过来的是空指针,断言函数不仅仅可以用来避免空指针,其可以避免自己想避免的其他东西。...

2022-06-20 21:50:32 279 14

原创 C语言实现基础版扫雷

如上所示是一个九成九的初阶版扫雷棋盘,棋盘上八十一个格子共有十处埋有地雷。当在(x,y)处有地雷,玩家被炸死,游戏结束,(x,y)处没有地雷,(x,y)处会显示其周围八个坐标雷的信息,假设周围八处共有三处埋有地雷,则在(x,y)处显示3。...

2022-06-14 14:37:11 166 13

原创 C语言实现三子棋

本文利用循环语句、判断语句、各种自定义函数以及不同功能的库函数实现了实现了简单三子棋游戏。函数实现放在一个.c文件中,库函数头文件以及自定义函数声明放在一个.h文件,主函数单独放在一个.c文件中。这种分文件化的书写形式对代码的维护与修改起到了便利作用。...

2022-06-12 15:41:22 668 17

原创 数据在内存中的存储

类型的意义:1.内存里面存的是什么;2.怎么解读这块内存。

2022-06-11 20:42:41 341 9

原创 c语言指针重难点

指针的重难点包括指针数组,数组指针,函数指针等等。特此总结,以便自己在今后的学习中能时时回望,以此强化知识点的记忆。

2022-06-05 22:50:07 1102 6

原创 冒泡排序思想及实现

冒泡排序的核心思想:两个相邻的元素进行比较一组数据【9 8 7 6 5 4 3 2 1 0】,用冒泡排序的方法将其排列为【0 1 2 3 4 5 6 7 8 9】。

2022-06-05 17:40:05 315

原创 长篇详解C语言操作符

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档操作符前言1、操作符分类2、算术操作符3、移位操作符3.1左移操作符 <<3.2右移操作符 >>4.位操作符4.1按位与4.2按位或4.3按位异或前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考1、操作符分类操作符可分为如下几类:1算术操.

2022-05-26 12:58:10 181 4

原创 字符串逆序的几种写法

字符串逆序的几种写法提示:将字符串逆序与将其逆序打印出来是两码事,逆序是将内容倒着改变了,逆序打印虽然打印结果也是倒着的,不过储存字符串的数组内容并没有改变一、非递归写法1. 将一个给定的字符串abcdef逆序int main(){ char arr[] = "abcdef"; int sz = sizeof(arr) / sizeof(arr[0]); //求的是数组包含的元素个数,'\0'也包括在内 int left = 0; int right = sz - 2; //减2是因为

2022-05-23 18:27:32 8653

原创 通过调试发现程序死循环的原因

死循环经典案列

2022-05-17 22:33:03 845

空空如也

空空如也

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

TA关注的人

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