- 博客(14)
- 收藏
- 关注
原创 【数据结构】排序
1. 元素集合越接近有序,直接插入排序算法的时间效率越高2. 时间复杂度:O(N^2)3. 空间复杂度:O(1),它是一种稳定的排序算法4. 稳定性:稳定。
2024-11-01 21:20:36 675
原创 【数据结构】二叉树+相关OJ题
设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。思路:这题也要运用到判断两个二叉树是否相同的代码,还是运用递归,我们递归的目的时找到该树中与另一个树的根节点中相同的节点,然后将该节点与要判断的子树进行两棵树是否相同的判断,如果相同则返回真。思路:同样的遍历,这次遍历的目的是为了找到树的节点的左节点和右节点,找到并记录,然后进行交换就好。
2024-10-13 16:00:00 704 1
原创 【数据结构】堆
Top K问题即为从很多个数据中选取其中最大的K个数,而我们可以利用堆的性质来解决这个问题,我们可以先建立一个含有k个数据的小堆,然后再依次从取数据与小堆的堆顶进行比较,若该数据比堆顶的数据大,则让堆顶的数据与其交换,再进行向下调整。冒泡排序作为一种排序,它的实现很简单,但运行起来的效率极低,在现实生活中不具有编写的意义,相比于现实的运用,教学的意义更大。:一个二叉树,如果每一个层的节点数都达到最大值,则这个二叉树就是满二叉树,也就是说,如果一个二叉树的层数为k,且节点总数是2^k-1,则它就是满二叉树。
2024-09-04 21:45:32 770
原创 【数据结构】栈和队列
解题思路:用两个队列来实现栈的话,首先最开始的模拟入栈则随便输入一个队列q1,要模拟出栈的话先把队列q1中除最后一个元素外的其他元素输入到另一个栈q2,再返回最后一个元素。解题思路:本题我们可以运用栈的性质来进行解答,我们首先先创建一个栈,然后依次对字符串S进行读取,若读取到的为左括号,我们则把左括号入栈;解题思路:大体思路与上题差不多,换汤不换药,但与上题不同的是,这题两个栈的功能是固定的,一个专门用来输入,另一个专门用来输出,等用来输出的栈空了,再将用来输入的栈中的数据导入输出栈。
2024-08-20 19:00:00 683
原创 单链表OJ题
因为等式左侧2*L为偶数,所以等式右侧也要为偶数,而想要等式右侧也为偶数的话必须C和N必须同时为奇数或者偶数,所以N为奇数且C为偶数的情况不可能存在。slow一次走1步,fast不走2步,而是3步,4步,5步,n步的情况是什么样的,还能追上吗?思路:设置快慢指针,找到快慢指针的相遇节点,一个指针从head位置开始走,另一个指针从相遇点开始走,它们相遇点为环形链表入口点。思路:运用快慢指针,快指针先走k步后,慢指针再一同走,当快指针走到链表尾部时,此时慢指针的位置则在该链表的倒数第K个姐弟啊。
2024-07-30 18:30:00 1022
原创 【C语言】编译与链接
程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程⼀直保留他们的值。我们写完一个程序后,为了能在系统上运行这个程序,程序中的每一个语句都要经过一系列“翻译”的手段转化成机器能理解的二进制的指令,然后再通过一系列的指令使其变成可执行目标程序。在有操作系统的环境中:⼀般这个由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。• 注:在Windows环境下的目标文件的后缀是 .obj ,Linux环境下的后缀目标文件是 .o。
2024-04-30 04:30:00 429 1
原创 【C语言】文件操作
磁盘上的文件是文件。而在这里,我们根据功能将文件分为两类程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)数据文件文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
2024-04-17 16:25:59 1223
原创 数据在内存中的存储
对于有符号的整数,三种表示方法均有符号位和数值位之分,最高位即为符号位,其他位数值位。IEEE 754 规定,在计算机内部保存M时,默认这个数的第⼀位总是1,因此可以被舍去,只保存后面的xxxxxx部分。如保存1.101时,只保存后面的101,在取出时再自动加1,这样使得M所保存的位数更多,使数值更精确。对于64位的浮点数,最高的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M。对于32位的浮点数,最高的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。
2024-04-14 17:21:22 585 1
原创 深入理解指针
数组指针变量是:存放的是数组的地址,能够指向数组的指针变量注意区分数组指针变量与指针数组变量int *p[10];//p为指针数组//p2为数组指针。
2024-04-09 16:30:00 769 1
原创 自定义类型(结构体+枚举+联合)+静态通讯录
位段,C语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或称“位域” (bit field)。它的声明和结构体是类似的,有两个不同:1.位段成员必须是int ,unsigned int 或signed int2.位段的成员后面有一个冒号和一个数字struct Aint a:2;(此处的数字表示占的二进制位,如2就占两个二进制位int b:5;//A就是一个位段类型。
2024-03-16 22:52:48 847
原创 字符串函数与内存函数介绍
3.strtok函数找到str中的下一个标记,并将其用\0结尾,返回一个指向这个标记的指针(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。4.strtok函数的第一个参数不为NULL,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。1.如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,知道num个为之。1.和memcpy的差别为memmove函数处理的源内存块和目标内存块是可以重叠的。
2024-03-06 22:19:08 939
原创 【C语言】扫雷游戏实现(展开+标记)
扫雷游戏介绍扫雷是一款经典的游戏,它有三个规格:9*9(初级),16*16(中级),16*30(高级),初级包含10个雷,中级包含40个雷,高级包含99个雷。其游戏的规则为:点击一个方格,若该方格不是雷,则其回返回以它为中心的周围八个方格内包含的雷的个数,如周围有一个雷则返回1,周围没有雷则返回空白。而若该方格是雷,则玩家被雷炸死,游戏结束。该游戏的胜利条件便为排查出所有不是雷的方格。而我们将分为来编写扫雷:包含头文件,函数的声明,游戏需要的数据类型等。包含游戏的测试逻辑,菜单的打印等。
2024-02-05 22:23:21 913 1
原创 C语言-分支循环语句
1.开始C语⾔是结构化的程序设计语⾔,这⾥的结构指的是C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。我们可以使⽤实现,使⽤实现2.分支语句。
2024-02-01 15:11:05 1045 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人