- 博客(32)
- 收藏
- 关注
转载 地址解析协议(ARP)
简介 IP协议的设计目的是为跨越不同类型物理网络的分组交换提供互操作。这需要网络层软件使用的地址和底层网络硬件使用的地址之间进行转换。网络接口硬件通常有一个主要的硬件地址。由硬件交换的帧需要正确的硬件地址定位到正确的接口;否则无法传输数据。但是,传统的IPv4网络需要使用自己的地址:32位的IPv4地址。如果一台主机要将一个帧发送到另一台主机,仅知道这台主机的IP地址是不够的,还需...
2019-02-19 00:23:00
236
转载 IP 地址结构
简介 我们日常用电脑、手机上网时,我们是否注意到一个问题,当我们上网时,别人是如何知道我是我的,我又是如何知道他是谁的。这里说的我和他,指的就是IP,当一台设备连接Internet时,至少有一个IP。这样别人才可以区分你是你,不是他。 IPv4地址通常采用点分四组或者点分十进制表示法(192.168.1.77)。十进制的范围是 0-255, 所以 IPv4的一共有4 294 ...
2019-02-15 00:36:00
239
转载 10个问题(程序员的自我修养)
想了解一些计算机底层的知识,于是买了本《程序员的自我修养》,耐着性子看了一遍,好像是看明白了,原来是这么回事啊,合上书,书上咋说来着。凉凉!!!我想一定是方法有问题,于是打算再看一遍,这次看书,要带着10问题,也是书中开篇提到。 1、程序为什么要在编译器编译之后才可以运行? 2、编译器在把C语言程序转换成可执行的机器码的过程中做了什么,怎么做的? 3、最后编译出...
2018-08-01 20:37:00
263
转载 学习感受(年会抽奖程序)
公司年会,老大让我写一个抽奖程序,就两个页面,蛮简单的嘛。整个程序都是用Qt写的,以前学过一点,但很久没有写过了。那天下班到家,吃过饭,九点了。打开电脑,写代码。话说,挺长时间没有写代码了,写代码的感觉还挺爽的。控件叫什么,信号和槽,都不知道怎么写了,幸好有以前的代码做参照。大概在十二点钟,我完成了抽奖程序。 其中遇到一个坑,我新添加了一个类,但是没有在类的开始加 Q_OBJE...
2017-01-18 22:31:00
218
转载 c语言是如何实现泛型链表
最近有看一点Linux内核源码,发现内核里大量使用了list_head结构体。百度查了一下,原来内核利用这个结构体实现了泛型。 自认为对链表已经很熟悉的我,决定自己实现一下。 下面以Node和list_head为例。 上图就是循环链大致思路了。(画的不好) 我们通过list_head对链表进行移动操作。 这里存在几个问题: 首先通过list...
2016-12-24 14:33:00
237
转载 从零开始学习Linux(mkdir and rmdir)
今天说mkdir 和 rmdir。因为mkdir 内容比较少。而且也很好理解。 对于mkdir来说,一般只用到 -p -m,我只用过-p参数,-m也是刚刚看的。 先说不带参数的: mkdir test //这样我们就在当前目录下创建了一个test文件夹。 mkdir test/aaa //这样我们就在test目录下创建了一个aaa文...
2016-12-20 21:45:00
112
转载 从零开始学习Linux(cp 命令)
功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息参数: -a 或 --archive 此参数的效果和同时指定"-dpR"参数相同 -b 或 --backup...
2016-12-18 22:38:00
111
转载 从零开始学习Linux (cd命令)
上一篇博客中提到,我们学习命令大多都要参考 --help 这个选项。但是cd命令并没有这个选项。 我们可以通过 help cd 来查看cd的使用方式。其实cd命令挺简单的,它的作用是进入文件夹,也就是他的参数。可以是绝对路径,也可以是相对路径。 我们先说一下cd的用法,然后再讨论为什么cd没有--help这个选项。 例如 gaozy@gaozy-virt...
2016-12-14 22:14:00
114
转载 从零开始学习Linux(ls命令)
学习Linux已经两年了,可是仍然是小白一个。用过很多命令,可是很多都没记住,基础不扎实,很大程度上是不记笔记,得过且过。 从今天起,开始整理Linux笔记。 Linux每个命令都有--help这个选项,这也是我们学习命令的主要途径。 ls 命令,这个命令一般用来查看文件文件夹下的文件。 ls 没有参数,默认显示当前目录下的非隐藏文件。 ls 后...
2016-12-13 22:47:00
166
转载 最小生成树Kruskal算法(邻接矩阵和邻接表)
最小生成树,克鲁斯卡尔算法.算法简述: 将每个顶点看成一个图. 在所有图中找权值最小的边.将这条边的两个图连成一个图, 重复上一步.直到只剩一个图.注:将abcdef每个顶点看成一个图.将最小权值的边的两个图连接.连接最小权值为1的两个图,这时a-c,b,d,e,f.连接最小权值为2的两个图,这时a-c,b,d-f,e.连接最小权值为3的两个...
2016-02-19 15:39:00
1399
转载 邻接表c源码(构造邻接矩阵,深度优先遍历,广度优先遍历,最小生成树prim,kruskal算法)...
graph.c#include <stdio.h>#include <stdlib.h>#include <limits.h>#include "aqueue.h"#define MAX_NUM 100typedef char node_type;typedef struct arc_node{ ...
2016-02-19 15:36:00
204
转载 邻接矩阵c源码(构造邻接矩阵,深度优先遍历,广度优先遍历,最小生成树prim,kruskal算法)...
matrix.c#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <limits.h>#include "aqueue.h"#define MAX_VALUE INT_MAX#define MAX_NUM 100...
2016-02-19 12:43:00
297
转载 最小生成树Prim算法(邻接矩阵和邻接表)
最小生成树,普利姆算法.简述算法: 先初始化一棵只有一个顶点的树,以这一顶点开始,找到它的最小权值,将这条边上的令一个顶点添加到树中 再从这棵树中的所有顶点中找到一个最小权值(而且权值的另一顶点不属于这棵树) 重复上一步.直到所有顶点并入树中.图示:注:以a点开始,最小权值为1,另一顶点是c,将c加入到最小生成树中.树中 a-c在最小生成树中的顶...
2016-02-18 14:28:00
1823
转载 图(邻接表)
我们先来看一个图我们想将这个图的信息存储到邻接表中,我们需要一个数组保存节点信息,还要有一个节点用来保存与该节点相邻的节点信息. 1 typedef struct arc_node 2 { 3 int pos; 4 int distance; 5 struct arc_node * next; 6 } Arc_node;//...
2016-02-13 11:45:00
151
转载 图(邻接矩阵)
图有两种表示方法,邻接矩阵和邻接表,接下来我们讲解邻接矩阵和用c实现一个邻接矩阵.我们先看一个图:我们想将这样一个图信息存储起来,我们有两个必须存储的数据,节点信息(a,b,c,d,e)和权值(3,5,4,1,6,7)和节点之间的关系.权值也就是路径.邻接矩阵表示法,用两个数组表示,一个一维数组和一个二维数组.一维数组存储节点信息,二维数组存储节点之间的关系....
2016-02-13 10:57:00
325
转载 堆
之前讲的二叉树都是由节点和边构成的,今天我们来用数组表示二叉树. 用数组表示的二叉树就不需要指针域了,因为我们可以通过数组的下标来计算节点的左右孩子和父亲节点. 如果数组的下标从0开始:求节点i的孩子与父亲 leftchild[i] = i * 2 + 1; rightchild[i] = i * 2 + 2; parent[i] = (...
2016-02-06 08:25:00
109
转载 哈夫曼树
哈夫曼树又称最优二叉树,是一类带权路径长度最短的树. 1)路径:从树的一个节点到另一个节点之间的分支构成这两个节点之间的路径. 2)路径长度:路径上的分支数目称作路径长度. 3)权:每个节点有一个实际的值,用来描述这个节点. 4)节点的带权路径长度:从该节点到根之间的路径长度与该节点的权值乘积. 5)树的带权路径长度:树中所有叶子节点的带权路径长度之和....
2016-02-05 16:51:00
106
转载 红黑树(四)源码
rbtree.h#ifndef _RBTREE_H#define _RBTREE_Htypedef int value_type;typedef bool color_type;const color_type red = true;const color_type black = false;typedef struct node{ ...
2016-02-03 20:45:00
79
转载 红黑树(三)删除
删除操作比插入复杂一些。首先我们先来了解一些红黑树的特性。这些是我随意列举的,供大家参考。 1、红色节点的父亲黑孩子一定是黑色。(nil是黑节点) 2、单支节点,只能是黑红。(红黑,黑黑,不符合规则4,到树尾黑节点个数相同) 3、真正的删除节点一定是单支节点或者叶子节点。(没有孩子的节点)接下来我们讲如何找真正的删除节点。有左右子树的情况如果8是删除...
2016-02-03 20:40:00
125
转载 红黑树(二)插入
接下来介绍红黑树的插入操作,介绍插入之前,我们先来了解一下红黑树的性质。 1、每个节点不是红色就是黑色 2、跟节点为黑色。 3、如果节点为红,子节点必须为黑。 4、任意节点至树尾端的任何路径,黑节点必须相同。 规则4主要是保证树的平衡性,不过它的要求不是很严。主要是为了减少调整操作。根据规则4,我们可以判断出新节点都是红节点。(如果新节点是黑节点,那...
2016-02-03 20:00:00
84
转载 红黑树(一)旋转
红黑树属于平衡二叉树,所以很多操作根二叉树是一样的。学习红黑树,首先要把二叉树理解,并能用代码实现。 我主要讲述我是怎么写一棵红黑树的,并不做过细的解释。我们主要学习旋转,插入,删除。其他操作根二叉树是一样的。 旋转跟插入操作,我是跟STL源码剖析学的,书上讲的很清楚,一个上午就可以理解+实现,然后下午学习删除操作,呵呵。。。删除操作书中没有介绍,我是对照算法导论里的伪代...
2016-02-03 19:00:00
173
转载 二叉树的非递归遍历
想比递归遍历二叉树,非递归遍历显得有些复杂。今天我们介绍非递归遍历的中序算法。 我们知道递归是靠栈来实现的。递归遍历是将复杂的算法交给了工作栈,算法比较容易,但系统开销大,而非递归遍历是由我们来实现复杂的操作,这样算法难度增加,但系统开销较小。 算法是思想: 设置一个栈stack,current为指向根节点的指针。 current非空时,将curren...
2016-01-27 13:59:00
81
转载 栈与递归
今天说的是栈与递归的关系,函数的递归调用和普通函数调用是一样的。当程序执行到某个函数时,将这个函数进行入栈操作,在入栈之前,通常需要完成三件事。 1、将所有的实参、返回地址等信息传递给被调函数保存。 2、为被调函数的局部变量分配存储区。 3、将控制转移到北调函数入口。当一个函数完成之后会进行出栈操作,出栈之前同样要完成三件事。 1、保存被调函数的计算结果。...
2016-01-27 13:05:00
128
转载 细说二叉树的删除操作
二叉树的删除有很多种方法,只要删除后满足二叉树的性质即可。我们先看先看一颗二叉树。例如我们要删除20这个节点。1、把30变成根,10变成25的左孩子。2、把10变成根,30变成10的右孩子。这两种办法都可以达到删除20的节点目的。我们可以这么做,是由二叉树的性质决定的。仔细观察这个树,我们会发现,20的左孩子都小于它,20的右孩子都大于它。所以经过1或2的...
2016-01-23 20:46:00
276
转载 二叉树
今天介绍二叉树,主要介绍c的代码实现,更多关于二叉树的概念,大家可以百度或者看书。先介绍二叉树的存储结构typedef struct node{ int data; struct node * left; struct node * right;} Node;typedef struct tree{ Node *...
2016-01-22 13:20:00
108
转载 链表队列
接下来把链表队列的代码分享给大家。因为还是链表操作,不做其他介绍。lqueue.h#ifndef _QUEUE_H#define _QUEUE_H#define MAXSIZE 10typedef struct node { int data; struct node * next;} Node;typedef st...
2016-01-20 21:34:00
79
转载 数组队列
用数组实现的队列,也叫循环队列。就是定义一个数组,用两个下标front,rear表示队头和队尾。当队头和队尾相等时,队列为空。当队尾+1等于队头时,队列为满。这样会浪费一个内存空间。还可以定义一个变量,表示队列空满。 我们下面介绍的是第一种方法。我们可以把数组想象成一个圆形,数组当然不会是圆形,我们可以根据取余来判断数组的下标是否还在数组范围内。我们在定义数组时会给...
2016-01-20 21:30:00
111
转载 链表栈
链表栈的代码已经写了好久了,今天给大家分享出来。 链表栈还是链表的那几样操作,很简单,把链表搞定,它就不在话下了。不对它做过多介绍了,直接贴代码,水平有限,有错误还请指出。lstack.h#ifndef _STACK_H#define _STACK_H#define MAXSIZE 10typedef struct node{ in...
2016-01-20 20:48:00
109
转载 c语言实现数组栈
已经十一点,这是今天的第三篇博客了,为什么今天要写这么多呢。因为这些代码是之前写好的,写起来比较快。当然不是这个原因,真正的原因是下午玩了一下午游戏,好累,想睡觉,躺在床上看了一篇不知哪年毕业的学长讲他面试的经历的博客。我被刺激到了。呵呵。。。 对于栈的性质和定义我就不多说了。之前利用栈写过表达式计算器,有兴趣的同学可以试试。递归与栈的联系很密切,应该说递归就是靠栈来实现的。...
2016-01-10 23:26:00
179
转载 c语言实现双链表
中午写了一篇关于单链表的博客。好吧,我并没有搜到我写的这篇文章。但我还是要写下去,万一有人看到了呢……不过,呵呵。。。双链表和单链表的操作大同小异,只是多了一个前驱指针,我是这样定义的。typedef struct node{ int data; struct node * previous; struct node * next;}...
2016-01-10 23:00:00
103
转载 c语言实现单链表
这学期刚刚学了数据结构课程,利用假期时间,把所学的数据结构用c写一遍,分享给大家,由于水平有限,错误的地方请大家见谅,欢迎指正。对于单链表来说,它由节点的结构体组成,为了更清楚,我增加了一个链表结构体。请看代码!typedef struct node { int data; struct node * next;} Node;typed...
2016-01-10 14:17:00
128
转载 浅谈C的应用与常见error
开通博客很久了,一直想写一些自己的东西,由于所学知识有限,一直不能落笔,废话少说,进入正题。 我下面所写的都是用“.c”后缀的。“.c”后缀是c源文件的后缀,“.cpp”后缀是c++源文件的后缀。c++继承了c语言的一些特性,所以有些bug在“.cpp”里是可以通过的。 1、scanf()你真的了解了么?; scanf()是有返回值的,返回值类型是int,...
2015-04-06 15:10:00
88
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人