自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++中list容器的特性及使用介绍(超详细!!)

1.1 list的介绍list文档链接:kw=list注:C++库里自带的list是带头双向循环链表1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过两个指针分别指向其前一个元素和后一个元素。3. list与forward_list(单向链表)非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。

2024-05-08 13:44:18 787

原创 C++中list容器的模拟实现(超详细!!)

【代码】C++中list容器的模拟实现(超详细!!

2024-05-08 12:46:26 67

原创 二叉搜索树介绍(C++)

如果找的是 左子树的最大结点(也就是左子树的最右结点) 来替换的话,那么在交换完这两个结点的值,删除掉这个最右结点后,还要记得让这个最右结点的双亲结点指向这个最右结点的左子树(如果这个最右结点有左子树的话)。情况d:替换法,找一个结点的值替代这个要删除的值,这个用来替代的值就是 左子树的最大节点 或者 右子树的最小节点,这样才能保证删除之后,这还是一颗搜索树。情况c:删除该结点且使被删除节点的双亲结点指向被删除结点的右孩子结点--直接删除。若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。

2024-05-04 16:58:17 472

原创 C++中map和set的介绍和应用总结

set文档介绍链接:kw=set大致内容:1. set是按照一定次序存储元素的容器2. 在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。3. 在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行排序。

2024-05-04 16:07:31 689 2

原创 C++中string类的模拟实现(超详细!!)

浅拷贝:也称位拷贝,编译器只是将对象中的值拷贝过来。如果对象中有管理资源,最后就会导致多个对象共享同一份资源,当一个对象销毁时就会将该资源释放掉,而此时另一些对象不知道该资源已经被释放,以为还有效,所以当继续对资源进项操作时,就会发生访问违规的问题。就像一个家庭中有两个孩子,但父母只买了一份玩具,两个孩子愿意一块玩,则万事大吉,万一不想分享就 你争我夺,玩具损坏。给每个对象都独立分配一份资源,不用和其他对象共享一份资源,解决了浅拷贝中因多个对象共享一块资源而导致的访问违规的问题。

2024-03-11 13:46:35 448 3

原创 C++中的内存管理

int _val;,_val(val);{}struct ListNode* CreateListNode(int val) //以前C语言创建一个结点的做法if(!newnode)//...ListNode* CreateList(int n) //假设要创建一个长度为n的链表,用C++的方式//哨兵位,不然下面还需要判空int val;//尾指针printf("请依次输入%d个结点的值:",n);//注:这里用C语言的printf方便点,用cout还有分几段进行打印。

2024-03-04 13:04:01 1479 4

原创 leetcode--设计循环队列详解

2.多开一个位置,不用来存放数据,只用来判断空还是满(满的时候就是(back+1)%(k+1)==front)在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。enQueue(value): 向循环队列插入一个元素。deQueue(): 从循环队列中删除一个元素。循环队列的一个好处是我们可以利用这个队列之前用过的空间。答:(两种方法,本文使用第2种方法,多开一个位置)isEmpty(): 检查循环队列是否为空。isFull(): 检查循环队列是否已满。

2023-12-08 22:37:37 64

原创 数据结构--线性表--顺序表和链表

不带头单向不循环链表只适合头插、头删,进行其他的操作效率都不高不带头单向不循环链表只有一个next,所以要注意不带头单向不循环链表的相交不可能是一个X型,两个不带头单向不循环链表相交一定是Y型。

2023-12-07 20:44:07 105 1

原创 C语言自定义类型详解(结构体+位段+枚举+联合)

int x;int y;}p1={1,2};int data;//结构体的嵌套初始化//结构体的嵌套初始化int main()int a=10;int b=20;//通过.结构体成员名的方式可以不按顺序初始化return 0;这些都是正确的结构体变量的定义和初始化。位段的声明和结构体是类似的,但有两个不同:1、位段的成员必须是int、unsigned int或signed int。

2023-10-22 19:43:43 102 7

原创 C语言部分内存操作函数详解+模拟实现

注:1、本文中所提到的4个内存操作函数的头文件均为<string.h>2、本文中所用例子均为本人在VS2022 Debug X86的环境下测试所得。

2023-09-25 19:37:49 160 6

原创 数据在内存中的存储(C语言)

(1)内置类型。(signed/unsigned)char 字符数据类型注:1、字符在内存中存储的是字符的ASCII码值,ASCII码值是整型,所以字符类型归类到整型家族2、char是否是有符号的,在C语言中并没有明确规定,是否有符号取决于编译器(在绝大部分的编译器中char是signed char)(signed/unsigned)short(int) 短整型注:int 默认为是 signed int(signed/unsigned)int 整型。

2023-08-22 13:43:56 52 1

原创 杨辉三角的打印(C语言)

首先,很容易就想到要用到循环,接着,通过观察杨辉三角图,可以想到用二维数组来表示其某一行某一列的数,再结合每个数都等于其上方的两数之和(除了两端和顶角),所以代码如图所示。如图所示即杨辉三角,每一行的两端都是1,其余位置的每个数字等于其上方的两数之和,第n行一共有n个数。那么我们该如何用C语言在屏幕上打印杨辉三角呢?如果有更优的解法,欢迎在评论区留言,感觉观看。在三角形中的一种几何排列,中国南宋数学家。

2023-08-21 20:43:08 1204 2

原创 C语言数组详解

但在后来C99的标准中,加入了变长数组的概念,即数组的大小允许使用变量来指定([]中可以放变量),但是数组的大小一旦确定以后,是不能再修改的。[ ]中的值代表数组的长度--即可以放几个元素,[ ]中最好填一个整数或者常量表达式(#define定义的常量也能用),不能使用变量。也可以不指定数组的长度即[]中什么都不写,然后系统就会根据你所放进去的元素个数来默认指定该数组的大小。所以数组的下标如果小于0,或者大于n-1,那么就是数组越界访问了,超出了数组合法空间的访问。2、&数组名,取出的是数组的地址。

2023-08-08 16:26:01 68

原创 交换两个整数的值(C语言)

虽然以上两种方法都易于理解,但也有一个缺陷,如果要交换的两个整数的值超出了int能存储的范围,就会出现错误。这最后一种方法虽说能避免因交换的值太大而溢出的问题,但代码可读性差,不易理解。最容易想到的方法应该就是通过创建一个临时变量来实现两个整数的交换。三种方法各有优缺点,在遇到问题时还是要视具体情况而择优选择。所以,还有一种方法,可以避免这种问题的出现。本人为一名C语言的初学者。对于交换两个整数的值。

2023-08-04 09:05:52 1217 1

原创 C语言实现扫雷小游戏(初学C语言)

内容并没有很高深的代码,但要想用C语言写出该游戏,本人认为还是有点难度的,你要先想好大致的结构框架,且代码量对于初学者来说还是蛮多的,但确确实实并没有非常的难(要初步理解明白二维数组),只要多花点功夫,多思考一定是能做出来的。本人所用编译器为VS2022。

2023-08-02 19:56:56 25

原创 用C语言写三子棋小游戏(初学C语言)

代码一共也就100多行(本人用的是VS2022这款编译器),内容也没有什么很高深的代码(能初步的了解了数组和循环还有选择语句的内容就已经足够了),有兴趣的都可以试一试。

2023-08-02 19:30:43 29

原创 梦开始的地方

对于编程,我一开始并不是很了解,只知道跟计算机有关联,之所以会想学,也是因为本人十分爱玩手机、电脑,然后一直想着以后自己能做一款游戏,后来听说了想要做游戏,就要懂得编程,所以便开始走上了学习编程的路(学的C语言),我的编程目标很简单,就是希望自己能学到有能力开发游戏,能做个游戏自己玩,仅此而已,并不奢求靠这个找工作(本人对于自己的专业和大学还是很自信的)。4、最想进入的IT公司。

2023-06-11 16:06:25 83

空空如也

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

TA关注的人

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