自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构——栈与队列以及题解

首先要实现栈以及队列,而栈的实现在上一个博客()内就已提及,在此处就不赘述了。队列实现由于队列具有先入先出,且只能在队尾入队队头出队的性质,用单向链表实现较为简单以及方便,用数组实现的话,不论是用数组头作队头还是数组尾,在入队或出队时都会比较麻烦,而且还需要考虑扩容;链表的话仅需要一个指针指向链表头结点,一个指针指向链表尾节点即可,入队就是在尾节点创建新节点出队就是在对链表进行头删,这两种操作都较为简单。实现代码:头文件对应函数。

2023-03-25 10:25:30 90 1

原创 数据结构题解——有效括号(以及栈的实现)

因此,我们就可以拿栈来接收左括号,当读到右括号时就与栈顶元素作比较,匹配就出栈并查看下一个括号,这么一来问题就解决了。虽然数组可以通过下标访问其内部对应元素,但是在这里我们构造的是栈,因此要避免直接访问内部的数据,不然就违背了栈的“先进后出”原则。若是如图所示的有效括号类型的话,第二次出栈的就会与第一次出栈的相匹配,但是很明显,当左括号和右括号对称顺序时(上代码之前,由于是栈来解决该题,那么建栈就是必须的一步,最简单实现方式就是数组实现(),既然通过栈来实现,那必然会考虑入栈问题,怎么入呢?

2023-03-24 16:56:33 79 1

原创 数据结构题解——复制带随机指针的链表

关于这几个问题,要知道,我们既然要返回复制后的链表,那么就要把复制的链表从原链表里提出来,然后链接,当然也要链接(还原原链表)。而random指针嘛,仔细观察会发现一个规律(除NULL外),复制节点的random指针应该指向的位置正好是对应原节点的random指针的下一个,既然如此那还不简单?最容易想到的必然是相对位置方法了,理解就是,比如下面这个,二号节点(13)的random指针指向一号节点(7),那么他指向的位置相对于整个链表的位置是一,因此,让复制来的链表也指向相同的相对位置就好了。

2023-03-20 22:11:27 86 2

原创 数据结构——栈与队列

(虽然栈是先入后出原则,如依次push(入栈)1,2,3,4,然后再全部pop,出栈顺序就是4,3,2,1。但是若没有规定入栈出栈顺序,那么出栈结果就不唯一,如先push一个再pop一个,那么出栈顺序依旧是1,2,3,4)概念:只允许在一端进行插入数据的操作,在另一端进行删除数据的操作的特殊形式线性表,队列具有先进先出FIFO(First In First Out)的原则。栈的实现推荐使用数组,一方面是结构简单,另一方面是对于普通栈而言数组能实现的功能就足矣(喜欢玩花的当我没说)。

2023-03-20 21:15:19 37

原创 链表——带环链表

给出一个链表判断链表是否带环带环链表是单向链表里一种,理解如下图注意区分环形链表(即首尾相接)作为单向链表你常见题型之一的带环链表,考点有难易两种:给出一个链表判断链表是否带环这题较简单,通过快慢指针的做法就能轻松解决,即定义两个结构体指针,一个走一步,一个走两步,当两指针相等时判断为带环,若遍历完整个链表不存在相等情况,就说明该链表不带环,附上代码从图形上理解就是(以带环为前提),定义了两个结构体指针,两指针同时从起点(头节点)出发,但是fast相比slow多走了一步,也就是说会先到达环处,

2023-03-11 17:07:51 196 1

原创 C语言宏的用法

虽然似乎函数和宏看起来一样,但是后置++,是在向函数传参之后才进行++,虽然最后a,b都各++了一次,但是传入函数内的是初始值,是固定的,从而没有影响函数,而影响了宏。怎么注意这种情况呢?可以试试上面的ADD宏,可以发现“副作用”对它并没有影响,因而,当参数出现次数超过一次时就要注意参数是否具有“副作用”。既,如果参数是有“副作用”的(如++,--),那么会连同“副作用”一起,传入宏的内部,但函数不会。

2023-02-10 13:54:57 148

原创 通讯录3.0

前面对通讯录进行的修改,已经使通讯录有了动态扩容的能力,但是还有另一个很大的问题就是,我们输入通讯录的数据是储存于内存中的,当程序运行结束后,程序所申请的内存空间也将被收回,因而联系人数据会丢失,那么如何将数据存储到磁盘当中呢?再然后,既然我们存储了数据,那么就还要对数据进行读取,读取应该在函数初期进行。首先,在关闭通讯录前,要将通讯录里的数据存入磁盘。这就要依靠库函数里关于文件操作的函数了。这样就有了能使用的通讯录3.0了。

2023-01-16 15:20:27 46

原创 动态扩容通讯录实现

前不久学会了通讯录的实现,但是通讯录的大小始终是固定死的,当放满之后就不能再放入了,或者开辟的空间过大,只放入一两个联系人又造成空间的浪费。为了解决这个问题,在学习了动态内存分配后得以实现,话不多说,看看效果。当容量达到3之后,再次进行ADD时,检查容量的函数就会进行扩容,从而使容量增加,既解决了满了不够用的问题,还解决了开辟空间过大过于浪费的问题,当然,退出程序要释放申请的空间,避免出现额外的麻烦。

2023-01-15 14:54:20 49

原创 C语言实现简单通讯录

通讯录的基本功能包括:添加、删除、修改、查找、排序、编辑、展示都已具备。通过结构体的学习,我们已经具备了一定的知识,现在就来进行通讯录的实现;首先是整个的头文件;然后是主要函数的声明。

2023-01-12 18:32:29 67

原创 结构体的大小计算

通过简单画图就能很容易理解到为什么该结构体大小会为12字节了4+1+4+3=12,中间3个字节因为要对齐所以未被利用,但依然被占用,属于结构体内的大小。若只是单独相加的话大小应该是4+1+4=9,但实际上用sizeof()计算出的结果却是12;:结构体成员自身大小和默认对齐数的较小值,在vs下默认对齐数是8;我们已经认识了结构体并知道了结构体的一些使用方式,但是,结构体的大小怎么计算呢,直接把成员单独大小加起来?1)结构体的第一个成员,对齐到结构体在内存中存放位置的0偏移处;

2023-01-11 14:39:21 73

原创 C语言小游戏---扫雷

通过C语言实现小游戏,扫雷

2022-11-10 21:05:45 684

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

通过基础C语言实现小游戏三子棋

2022-11-08 16:41:08 684

原创 初识C语言

(单位是字节,计算机常见单位有 bit(比特位)、byte(字节)、KB、MB、GB、TB、PB......除了 1byte = 8bit 外,其余换算进制都为1034 eg:1KB = 1024byte.一个字符占一个字节,一个二进制位也是一个字节.)关于使用vs时scanf报错的问题,可以使用scanf_s解决,但是scanf_s是由vs提供的,C语言中的是scanf,解决方法嘛,挺多的可以试着自己动动手。二进制 -- 汇编语言 -- B语言 -- C语言 -- C++ --> Java。

2022-10-29 23:22:48 264

原创 Hello world

但最近几节课,我慢慢有点想往网络安全方向靠了,原因嘛,就是岗位貌似比另一个方向多(其实就是钱),来了大学我也不知道为什么对钱比之前敏感了,没钱也不太好意思向家里要,但我没收入也没办法,所以能有更高的录用几率我觉得划算,更何况去搞独立游戏开发基本上是投钱(sad),好事是我不讨厌网络安全这个方向,不知道未来的我往哪边走呢(期待)。目前我这个专业学校出台的方向有两个大方向,一个是软件开发,另一个是网络安全,目前正在犹豫中,不过我觉得先别想那么多,先把c学好再说。

2022-10-06 23:50:19 680

空空如也

空空如也

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

TA关注的人

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