- 博客(16)
- 收藏
- 关注
转载 红黑树
转载: https://www.jianshu.com/p/e136ec79235c 二叉树删除结点找替代结点有3种情情景: 情景1:若删除结点无子结点,直接删除 情景2:若删除结点只有一个子结点,用子结点替换删除结点 情景3:若删除结点有两个子结点,用后继结点(大于删除结点的最小结点)替换删除结点 补充说明下,情景3的后继结点是大于删除结点的最小结点,也是删除结点的右子树种最左结点。那么可以拿...
2019-09-17 10:08:53
229
原创 AVL平衡树 - 非递归后序遍历
/* 用于后根遍历使用,添加tag在栈中判断 当tag为0时,表示当前节点为根的左子树已经入栈,右子树还未入栈 当tag为1时,表示当前节点为根的左右子树均已入栈,可以访问 */ struct bitree_node_tag_t { struct bitree_node_t *node; int tag; }; /* 后根遍历整棵树 可以支持以root为根的树的遍历 注意,ro...
2019-09-16 21:41:44
374
原创 AVL平衡二叉树 - 遍历
/* Visit是对结点操作的应用函数 按某种次序对T的每个结点调用函数Visit一次至多次,一旦失败则返回 */ int BiTreePreOrderTraverse(struct bitree_t *tree, BITREE_VISIT_CB visit) { /* 利用栈实现先序遍历 */ struct bitree_node_t *stack[BITREE_MAX_HEIG...
2019-09-16 18:20:53
627
原创 AVL平衡二叉树 - 插入算法
/* LL型 A B / \ / \ B C -> Dx A / \ / \ Dx E E C */ static int rotate_LL(struct bitree_t *tree, struct bitree_node_t *A) { ...
2019-09-16 18:15:25
513
原创 AVL平衡二叉树 -构建
/* 表示二叉树最大高度 */ #define BITREE_MAX_HEIGHT 32 typedef int (*BITREE_VISIT_CB)(void *); typedef int (*BITREE_CMP_CB)(void *, void *); struct bitree_node_t { struct bitree_node_t *lchild; st...
2019-09-16 18:10:03
231
转载 Linux Netfilter 表注册
作者:jerry_chg 来源:CSDN 原文:https://blog.csdn.net/lickylin/article/details/33347301 版权声明:本文为博主原创文章,转载请附上博文链接! /* 注册过滤表 */ struct xt_table *ipt_register_table(struct net *net, struct xt_table *table, ...
2019-07-22 15:53:21
228
原创 linux下安装libpcap及其依赖库
1、安装m4 解压:tar zxvf m4-1.4.13.tar.gz 安装: cd m4-1.4.13 ./configure make make install 2、安装bison 解压:tar zxvf bison-2.4.1.tar.gz 安装: cd bison-2.4.1 ./configure make make install 3、安装flex 解压:tar zxvf flex-2...
2019-07-19 15:20:37
1578
原创 gdb调试程序使用方法
1、启动程序 gdb ./a.out 2、进来后在gdb模式,执行r开始启动,如果要带命令行参数,则在r后依次输入 (gdb) r 0 1 3、进入程序后,按键ctrl+c进入gdb模式 Program received signal SIGINT, Interrupt. 0x0012d422 in __kernel_vsyscall () (gdb) 4、添加断点方法: (1)b 函数名 ...
2019-07-19 15:10:07
640
原创 vim常用命令总结
去年多余的^M符号: :%s/^M$//g 首先在目录下建立cscope索引文件 find -name ‘*.c’ > cscope.file cscope -Rbkq 这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。 其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。 上面...
2019-07-19 15:06:54
217
原创 Linux Netfilter nat表注册
Linux Netfilter的nat表的主要功能是修改IP地址和端口号。 nat表在4个链的位置注册:PREROUTING、POSTROUTING、LOCAL_OUT、LOCAL_IN。 注册函数如下: static int __init nf_nat_standalone_init(void) { int ret = 0; need_ipv4_conntrack(); #ifdef C...
2019-07-19 14:42:50
284
原创 Linux Netfilter mangle表注册
Linux Netfilter的mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。 mangle表在五个链的位置都有注册。 注册函数如下: static int __init iptable_mangle_init(void) { int ret; ret = register_pernet_subsys(&ipt...
2019-07-18 21:18:28
645
原创 Linux Netfilter filter表注册
Linux Netfilter的filter表注册在以下几个链的位置:LOCAL_IN、FORWORD、LOCAL_OUT。 注册函数如下: static int __init iptable_filter_init(void) { int ret; if (forward < 0 || forward > NF_MAX_VERDICT) { printk("iptables...
2019-07-18 20:48:40
310
原创 Linux Netfilter NF_HOOK解析
NF_HOOK实际是转成NF_HOOK_THRESH宏函数调用。 注意,thresh表示只执行优先级大于thresh的注册的hook回调。 NF_HOOK原型: #define NF_HOOK(pf, hook, skb, indev, outdev, okfn) \ NF_HOOK_THRESH(pf, hook, skb, indev, outdev, okfn, INT_MIN) ...
2019-07-18 16:43:41
5074
原创 Linux Netfilte Hook注册
int nf_register_hook(struct nf_hook_ops *reg) { struct nf_hook_ops *elem; int err; err = mutex_lock_interruptible(&nf_hook_mutex); if (err < 0) return err; /* 1.根据协议号和hook点确认链表nf_ho...
2019-07-18 15:35:30
250
原创 在虚拟机中调试linux内核源码的方法
1、修改顶层Makefile中 ARCH = x86 CROSS_COMPILE = 2、默认配置 ls arch/x86/configs/ i386_defconfig x86_64_defconfig make i386_defconfig 3、编译 make zImage make bzImage 区别是编译zImage限制512K以内,bzImage没有限制。 编译完成后生成arch/...
2019-07-18 15:26:06
1441
原创 Linux Netfilter Hook数据结构
struct nf_hook_ops { /* 链表成员 */ struct list_head list; /* User fills in from here down. */ /* 钩子函数指针 */ nf_hookfn *hook; /* 是模块的所有者,一般owner = THIS_MODULE */ struct module *owner; /* 协议簇 */ u_int8_t ...
2019-07-12 17:43:25
557
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅