- 博客(28)
- 收藏
- 关注
原创 C++类与对象(一)
面向过程和面向对象、类的引入、类的定义、类的访问限定符及封装、类的作用域、类的实例化、类的对象大小的计算、类成员函数的this指针
2024-05-21 17:17:59 1017
原创 数据结构之堆的创建
如果有一个关键码的集合K={k0,k1,k2,…,kn-1},把它的所有元素按的顺序存储方式存储在一个一维数组中,并满足ki<=k2i+1且ki<=k2i+2(或满足ki>=k2i+1且ki>=k2i+2),其中i=0,1,2,…,则称该集合为堆。小堆:每个父节点不大于子节点大堆:每个父节点不小于子节点堆的性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。
2024-03-31 15:34:08 1283
原创 Leetcode232.用栈实现队列
一个栈专门用来插入数据,一个栈专门用来出数据。//定义两个栈ST pushst;//插入数据ST popst;//出数据} MyQueue;//定义一个指向栈的指针//将新定义的两个栈初始化return obj;本题的关键就是要先建立两个栈,一个栈用来插入数据,一个栈用来导入数据。从而实现队列的先进先出。
2024-03-25 18:15:01 589
原创 Leetcode225.用队列实现栈
定义一个非空队列,一个空队列//定义两个队列,q1,q2Queue q1;Queue q2;} MyStack;
2024-03-23 16:17:32 1054
原创 数据结构之队列
要在一个队列中插入一个数据,首先要开辟一个新结点newnode,让newnode的数据域存储需要插入的数据,因为是在队列的队尾插入,所以newnode会成为新的队尾,即指针域置为空。当插入的队列不为空时:pq->ptail->next会线连接上newnode,即插入的newnode会成为新的尾结点,pq->ptail指向新的尾结点(pq->ptail = newnode),队列的成员数量加一。情况二:队列中有多个节点时,释放掉头结点,头指针会指向头结点的下一个位置,成为新的头结点。二是:插入的队列不为空。
2024-03-23 12:16:34 1012 1
原创 数据结构之栈
栈是一种特殊的线性表,其只允许在操作。进,另一端称为。栈中的数据元素遵守LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。压栈的过程可以看作是往一个桶里装篮球,装一个,最上面的球便变成新装的,栈顶元素也就变。栈顶元素是最上面的篮球。出栈的过程可以看作是把篮球从桶里拿出来,肯定是先拿最上面的,(也就是最后一个装进去的,第一个拿出来。
2024-03-16 18:02:16 395 1
原创 Leetcode(八)随即链表的复制
(上图13的random是7,也就是第二个结点的random是第一个结点,所以我们就找第一个结点,就算后面第三个、第四个节点也是7,我们都不管,我们只找第一个结点。我们可以在每个原节点的后面拷贝一个该原节点,让每个拷贝的节点都插在原节点的后面。拷贝节点的random就在原节点的random的后面(后面会详细解释这个),可以根据这来控制拷贝节点的random。此题的步骤:拷贝节点插入到原节点的后面->控制拷贝结点的random->拷贝节点拿下来尾插组成拷贝链表,恢复原链表。返回复制链表的头节点。
2023-12-10 18:11:22 892 1
原创 Leetcode(七)——给定一个链表 ,判断链表中是否有环。 返回环的入口。
给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。pos。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。true链表中有一个环,其尾部连接到第二个节点。true链表中有一个环,其尾部连接到第一个节点。false链表中没有环。
2023-12-09 20:37:13 950
原创 Leetcode(六)——链表的回文结构
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:true进入题目之前,我们先了解一下什么是回文结构回文结构是指双链DNA中含有的的序列。也可以描述为序列中两个相同的互补序列在一条DNA链上这种结构。也就是相反的。
2023-12-05 11:45:45 411 1
原创 Leetcode(五)——链表分割
现有一链表的头指针 ListNode*,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。
2023-12-04 21:37:03 399
原创 Leetcode(四)——链表的中间节点
给你单链表的头结点head,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。[3,4,5]链表只有一个中间结点,值为 3。[4,5,6]该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。
2023-12-04 11:14:49 359
原创 Leetcode链表刷题(二)合并两个有序链表
题目描述将两个升序链表合并为一个新的链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。[][0]l2。
2023-12-01 18:53:54 373 1
原创 带头双向循环链表
带头双向循环链表的尾插没有那么繁琐,只需要找到链表的尾指针tail,在他的后面插入newnode即可。定义一个初始化函数,对双向链表进行初始化,在初始化的过程中,需要给双向链表申请一个头结点 ,让它的前去指针和后驱指针都指向自己,形成一个闭环。尾插是在原本链表的尾结点后面插入一个新的结点,使它与前一个结点即原本的尾节点和哨兵位分别建立起双向关系。哨兵位是一个特殊的点,他就是链表的头,但他不是链表的第一个结点。带头双向循环链表的基本结点结构包括两个指针,一个指向前一个结点,另一个指向后一个结点。
2023-11-30 20:20:49 856
原创 Leetcode链表刷题(一)
给你一个链表的头节点head和一个整数val,请你删除链表中所有满足的节点,并返回。[][]题目解析本题是给我们一个链表,在给我们一个值val,让我们判断拉链表中是否有相同的值,有的话就删除掉,没有的话则不用管。
2023-11-28 16:57:25 819 1
原创 无头单向非循环链表
无头单向非循环链表是一种链表结构,其特点是没有头结点,且链表中的节点单向连接,不形成循环。这种链表结构相对简单,一般不会单独用来存储数据,而是作为其他数据结构的子结构,如哈希桶、图的邻接表等。在访问无头单向非循环链表中的特定元素时,只能从链表的开头进行遍历。此外,无头单向非循环链表是非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的。
2023-11-26 12:17:35 877 1
原创 顺序表的增删查改
在pos位置插入x,首先要满足pos要插入的地方在有效范围内,即0<=pos>size。顺序表的本质是一个数组,数组的缺陷是删除要覆盖,所以删除方面,数组很费劲,但是我们为什么还要学习这个顺序表呢?第二个参数为要插入数。进行尾插的时候要先检查容量够不够,够的话在进行尾插,不够的话,扩容之后在进行尾插。顺序表删除pos位置的值,要从前往后,删除的pos值那个地方位置便空了,需要后面的往前补。顺序表头删,是从前往后覆盖,第二个挪到第一个的位置,第二个位置便空了,然后第三个便挪到第二个位置,以此类推,挪完为止。
2023-11-15 19:37:19 51
原创 算法的时间复杂度和空间复杂度和空间复杂度
1、算法中的基本操作的执行次数,为算法的时间复杂度。2、在一般情况下,我们关注算法的最坏情况,即做悲观预期。3、算法在运行过程中临时占用额外存储空间大小的量度是算法的空间复杂度4、空间是可以重复利用,不累计计算的(空间复杂度)。时间是一去不复返,时间是累计计算的(时间复杂度)。5、空间销毁的本质是归还使用权。希望大家每天都有所进步!
2023-11-11 19:19:46 284 1
原创 动态内存管理(malloc函数、calloc函数、realloc函数、free函数)
动态内存管理(malloc函数、caloc函数、realloc函数、free函数)
2023-10-14 20:58:00 56 1
原创 两个数求最大值 判断两个数的大小 计算机平均成绩 scanf()的多组输入问题
两个数求最大值、判断两个数的大小 、计算机平均成绩 、scanf()的多组输入问题
2023-03-18 12:25:17 503 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人