自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (1)
  • 收藏
  • 关注

原创 Clang 10.0 手写静态分析器Checker

手写静态分析器Checker1.简介2.编写Checker3.配置CMakeLists4.配置Checkers.td5.编译构建6.测试1.简介目前网上找到的一些构建Checker的方法都比较古老,随着版本更新一些库文件和依赖文件的变动老方法不太适用,所以整理了一下在10.0版本下构建Checker的方法,10.0之前没没有使用过,后面的版本应该大差不差了。2.编写Checker编写自定义的Checker需要在以下目录进行:llvm/tools/clang/lib/StaticAnalyzer/C

2022-05-25 10:14:27 1706

原创 LLVM IR:从中间文件提取struct信息

LLVM IR:从中间文件提取struct信息先放上源代码:struct demo1 { long long A; long long B;};struct demo2 { long long C; long long D; float E;};int main(){ struct demo1 d1; struct demo2 d2; d1.A = 1; d2.C = 2; d2.D = d1.A + d2.C; return 0;

2021-07-15 19:48:53 1398

原创 LLVM IR学习记录(1) GetElementPtr指令

GetElementPtr指令是一条指针计算语句,本身并不进行任何数据的访问或修改,只进行指针的计算。使用语法如下:<result> = getelementptr <ty>, <ty>* <ptrval>{, [inrange] <ty> <idx>}*<result> = getelementptr inbounds <ty>, <ty>* <ptrval>{, [inra.

2021-07-12 17:03:34 5222

原创 《30天自制操作系统》---第一天

《30天自制操作系统》---第一天二进制编译与文本编译器大家用自己顺手的就可以,今天通过两种方法运行虚拟机,第一种通过作者提供的工具运行在QEMU中,第二种方法运行到VMWare中,直接上效果图。(将"hello,world"换成了"Welcom to FlashingOS!")QEMU效果图VMWare效果图...

2020-10-22 11:25:09 961

原创 递增单链表去重

递增单链表去重//递增单链表去除重复元素//算法思想:采用尾插法,将原来的单链表置为是有第一个结点的链表,//然后遍历剩下的节点,与新链表的尾结点比较,//如果相同则删除当前结点,如果不同则插入void Del_Sam(LinkList &L){ LNode *r = L->next,//r是新链表的尾指针 *p = r->next,//工作指针 *q; while(p != NULL){ //如果与尾

2020-09-20 20:13:21 207

原创 将一个单链表按照奇偶位置分成两个单链表(其中一个将原来位置逆序)

//C={a1,b1,a2,b2,...,an,bn},带头结点,就地拆分成两个线性表,//使得A={a1,a2,...,an} B={bn,...,b2,b1}//还是通过奇偶位置判断,A采用尾插法,B采用头插法LinkList Depart_AB(LinkList &A){ int count = 1;//计数器 //创建B链表 LinkList B = (LinkList)malloc(sizeof(LNode)); B->next = NULL;.

2020-09-20 15:12:42 1958 2

原创 将一个单链表按照奇偶位置分解成两个单链表(空间复杂度最小)

将一个单链表按照奇偶位置分解成两个单链表(空间复杂度最小)算法思想:函数的参数采用单链表的引用,返回值类型为链表,返回其中一个链表。 创建一个新的头结点,并且将形参传过来的链表置空,开始遍历,设置一个计数器,如果为奇数将节点添加到链表A的尾部,如果为偶数添加到链表B的尾部。具体实现代码如下。#include<iostream>#include"linklist.h"//自己写的头文件using namespace std;//将一个带头...

2020-09-18 21:02:09 4935 5

原创 查找两个单链表的公共节点

查找两个单链表的公共节点 算法思路:首先要明白单链表有公共节点的情况是什么,因为单链表中每个节点的next指针是唯一的,所以当存在公共节点的时候,其后面的所有节点也都是相同的,所以这是的链表是一个“Y”,而不是我们惯性思维想到的“X”。根据这个结论可知,如果两个链表存在公共节点的话,它们的尾结点也肯定是相同的。 明白了有公共节点的链表构造之后就好办了,假设两个链表的长度分别是 len1 和 len2 第一种暴力方法:遍历第一个链表的节点,每个节点都再遍历第二个链表的所有节点,...

2020-09-18 16:03:38 4557 1

原创 无序链表删除介于给定两个值之间的元素

无序链表删除介于给定两个值之间的元素算法思路:三个指针,p:工作指针 pre:p的前驱指针 q:中间变量指针,用于删除节点//无序链表删除介于给定两个值之间的元素bool LinkList_DelA2B(LinkList &L,int A,int B){ if(A>B || L == NULL) return false; LNode *pre = L, *p = L->next, *q; while(p...

2020-09-18 15:23:54 205

原创 头插法逆序输出单链表

带头结点单链表逆序输出算法思想:遍历链表元素,利用头插法建立新的链表,这样新生成的链表就是之前的逆序链表,直接对其进行输出即可。(函数中没有写头结点初始化的信息,读者自行补充)1.链表节点结构typedef struct LNode{ int data; struct LNode* next;}LNode,*LinkList;2.链表逆序//链表逆序void RevLinkList(LinkList &L){ LNode *p = L->ne

2020-09-11 22:17:14 1159

数据结构线性结构入门代码

线性结构基本常见代码 矩阵转置 特定数据删除 链表去重

2018-11-24

空空如也

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

TA关注的人

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