- 博客(74)
- 收藏
- 关注
原创 linux C语言 makefile编写规则
I参数是用来指定头文件所在目录。目录一般是不用指定的,gcc知道去那里找,但是如果头文件不在/usr/include里我们就要用-I参数指定了。
2024-02-29 16:03:10
913
1
原创 C++ 设计模式
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖父类的private成员在子类不能使用、不可见父类的成员在子类中的权限,最高为其子类的继承方式。抽象工厂模式和工厂方法模式一样,都符合开闭原则。但是不同的是,在抽象工厂模式中,增加一个产品族很容易,而增加一个产品等级结构却很难,工厂模式则反之。也就是说,在抽象工厂模式中,增加一个具体的工厂很容易,但是你想在工厂中多生产一种产品,就需要修改很多个类,会违背开闭原则,这种情况下应该使用工厂模式。简单来说:工厂模式新增产品类型容易,抽象工厂模式。
2024-02-29 16:01:41
970
原创 408 计算机组成原理笔记
408 计算机组成原理笔记第二章进位计数制各种计数制度十进制r进制计数法进制转换任意进制->十进制二进制->八进制二进制转为十六进制八进制转二进制十六进制转二进制各种进制的书写方式十进制转任意进制十进制整数转r进制整数部分小数部分真值和机器数第二章进位计数制各种计数制度十进制r进制计数法进制转换任意进制->十进制二进制->八进制二进制转为十六进制八进制转二进制十六进制转二进制各种进制的书写方式十进制转任意进制十进制整数转r进制整数部分
2024-02-29 15:59:07
188
原创 408 操作系统笔记
用户在计算机上跑程序的所有工作都要人工干预,如程序的装入、运行、结果的输出等。人与机器的速度差距太大。缺点:用户独占全机,人机速度矛盾导致资源利用率极低。内部碎片:分配给某进程的内存区域中,没有被用上的部分。外部碎片:是指内存中某些因为太小而难以利用的空闲分区串结构:逻辑上相邻,物理上不相邻。顺序结构:逻辑上相邻,物理上相邻。FCB(File Control Block)是用来存放控制文件所需要的各种信息的数据结构,为了实现“按名存取FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。
2024-02-29 15:58:43
526
原创 408 数据结构笔记
队列元素长度:(rear+MaxSize-front) %MaxSize特性:不能找到父节点能找到父节点,三叉链表优点:查找指定结点的双亲很方便。缺点:查指定结点的孩子只能从头遍历。带权路径长度(WPL)最小的二叉树称为哈夫曼树,也就是最优二叉树。无向图:顶点v的度是指依附于该顶点的边的条数,记为TD(v)。有向图以顶点v为终点的有向边的数目。ID(v)。以顶点v为起点的有向边的数目。OD(v)。有向图的入度之和和出度之和相等。无向图:度,遍历行有向图:出度:遍历行。
2024-02-29 15:58:00
1330
原创 堆排序 代码
#include <iostream>using namespace std;const int maxn=8;int a[maxn]={36,30,18,40,32,45,22,50};//假设一颗完全二叉树,其左右子树都是堆,调整后会破坏一颗子树的堆结构,需要再对该子树进行调整 void heapAdjust(int k,int last) //k为要调节的结点,last为最终结点 { int i=k,j=2*i+1,temp; //i指向要调整的结点,j指向i的左孩子
2021-09-04 22:09:44
73
原创 算法模板 栈与队列
用栈实现队列https://leetcode-cn.com/problems/implement-queue-using-stacks/思路:用一个输入栈,接收所有进入队列的数据;用一个输出栈,用于出队所有队头的位置。push操作:入队元素进入输入栈pop操作:若输出栈为空,则把输出栈所有元素倒入输出栈(这其实是先进后出变为先进先出的过程),把输出栈栈顶的元素弹出,并返回该元素。(若题目没有说明,还需要加入队列为空时的pop操作处理)peek操作:其实就是队列的pop操作,再把弹出的元素放回队列
2021-08-26 10:03:15
130
原创 C++ STL 容器适配器 栈与队列
容器适配器是什么栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使用哪种容器来实现栈的功能)。所以STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)。头文件#include<stack>定义stack<int> s;栈常用函数s.top(); //获取栈顶元素,并不删除s.pop(); //删除并返回栈顶元素s.push(); //向栈中加入元素s.empty; //判断栈是
2021-08-25 23:07:33
125
原创 算法模板 哈希表
哈希表一般都是用来快速判断一个元素是否出现集合里,查找操作时间复杂度为O(1)哈希碰撞:两个不同的原始值在经过哈希函数运算后得到同样的结果,对应到哈希表同一个位置解决哈希碰撞的方法:1.开放地址法当发生地址冲突时,按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止。2.拉链法将所有关键字为同义词的记录存储在同一线性链表...
2021-08-22 23:46:50
105
原创 KMP算法
KMP算法前缀:不包含最后一个字符的所有以第一个字符开头的连续子串后缀:不包含第一个字符的所有以最后一个字符结尾的连续子串模式串与前缀表对应位置的数字表示的就是:下标i之前(包括i)的字符串中,有多大长度的相同前缀后缀。KMP算法原理:到模式串不匹配的下标时,看前一个下标在前缀表的值(=前面字符串相同的前缀与后缀的长度),把模式串的下标移到这个值对应的下标上。求next数组代码:void getNext(vector<int>& next,string& need
2021-08-21 19:41:05
95
原创 算法模板 字符串
反转字符串https://leetcode-cn.com/problems/reverse-string/class Solution {public: void swap(char& a,char& b) { char temp=a; a=b; b=temp; } void reverseString(vector<char>& s) { if(s.size()
2021-08-20 17:36:33
80
原创 算法 链表 判断链表是否有环并且找到环的入口
https://leetcode-cn.com/problems/linked-list-cycle-ii/判断链表是否有环可以使用快慢指针法, 分别定义 fast 和 slow指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。若链表没有环,那么fast指针一定会提前到尾端NULL处。如果有环,如何找到这个环的入口从相遇结点出发一个指针index1,从头结点也出发一个指针index2,这两个指针每次只走
2021-08-19 23:45:50
129
原创 算法模板 链表
移除链表元素https://leetcode-cn.com/problems/remove-linked-list-elements/submissions/class Solution {public: ListNode* removeElements(ListNode* head, int val) { //删除==val的头结点 while(head!=NULL&&head->val==val) {
2021-08-18 21:29:14
67
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人