- 博客(24)
- 收藏
- 关注
原创 生成树相关框架代码
生成树相关框架代码stp.h# ifndef _STP_H# define _STP_H# include"stp_proto.h"# include"stp_timer.h"# include"base.h"# include"types.h"# define STP_MAX_PORTS 32 // 定义一共至多32个端口extern const u8 eth_stp_addr[];// 定义全局变量,eth_stp_addr数组// 定义端口结构体struct stp
2022-04-18 15:17:17
322
原创 生成树机制实验(2)原理说明
生成树机制实验(2)原理说明生成树拓扑生成树机制:通过禁止(block)设备的相关端口,在有环路的网络中构造出一个总体开销最小的生成树拓扑,使得网络在连通的前提下,避免广播风暴如何构建开销最小的生成树拓扑?实际上:具有相同开销的生成树拓扑可能并不唯一如何消除歧义性,构建唯一确定的生成树拓扑网络中的节点没有全局视图如何定义通信协议,分布式的构建生成树拓扑?网络中的节点收发消息的时序不确定 如何设计生成树运行机制,保证最终结果与消息收发时序无关?生成树的唯一
2022-04-16 21:56:56
2631
原创 生成树机制实验(1)Kruskal-2
生成树机制实验(1)Kruskal-2畅通工程1863Sample Input3 31 2 11 3 22 3 41 32 3 20 100具体实现注意输入输出,以及qsort()系统调用# include <stdio.h># include <stdlib.h># define MAXN 10000 + 10int par[MAXN],Rank[MAXN];/*前一个 par 数组用来记录每一个结点的根结点,后一个 Rank[MAXN]用来
2022-04-16 15:01:59
94
原创 生成树机制实验(1)Kruskal-1
生成树机制实验(1)Kruskal-1算法描述Kruskal算法基于贪心思想。首先把所有边按照权值先从小到大排列,接着按照顺序选取每一条边,如果这条边的两个端点不属于同一集合,那么就将它们合并,直到所有的点都属于同一个集合为止。基于并查集的贪心算法算法流程:对于图 G(V,E),算法描述如下:输入: 图 G输出: 图 G 的最小生成树(1) 将图G看做一个森林,每个顶点为一棵独立的树(2) 将所有的边加入集合S,一开始 S = E(3) 从 S 中取出一条权值最短的边(u,v), 如果(
2022-04-16 13:27:39
648
原创 生成树机制实验(1)并查集1
生成树机制实验(1)并查集1定义并查集(Union Find)是用于管理分组的数据结构。具备两个操作:(1)查询元素a 和 b 是否为同一组(2) 将元素 a 和 b 合并为同一组。并查集不能将在同一组的元素拆分为两组。结构利用树来实现并查集有 n 个结点,我们用 n 个元素来初始化这 n 个节点(1 ~ n)。现在分别用树形结构和非树形结构来表示,以 n = 6 为例 1 5 / | \ | 2 3 4 6
2022-04-16 10:04:36
104
原创 交换机转发实验(回顾哈希表实现)
交换机转发实验(回顾哈希表实现)哈希表的C语言实现哈希函数为对哈希表长取余哈希表算法实现# include <stdio.h># include <stdlib.h>// 宏定义//数据类型重定义# define uint8_t unsigned char# define uint16_t unsigned short# define uint32_t unsigned long// 哈希表长度# define HASH_TABLE_LEN 100
2022-04-10 17:27:00
718
原创 交换机转发实验二
交换机转发实验二链表实现struct list_head{ struct list_head *next,*prev;}; // 指针数据结构struct listnode{ struct list_head list; int number;}; // 内容数据结构# define list_empty(list) ((list)->next == (list))# define list_entry(ptr,type,member) (type*)(
2022-04-09 22:31:23
574
原创 交换机转发实验一
交换机转发实验一采用<list.h>头文件# include"include/list.h"# include <stdio.h># include <stdlib.h># define list_entry(ptr,type,member) \ (type *)( (char *)ptr - offsetof(type,member))# define list_for_each_entry(pos,head,member) \ for( pos
2022-04-09 17:42:38
1240
原创 广播网络基础(1)_了解list.h头文件
广播网络基础(1)_了解list.h头文件基础数据结构封装一、offsetof函数# include <stddef.h># include <stdio.h>struct address{ char name[50]; char street[50]; int phone;};int main(){ printf("address 结构中的 name 偏移 = %ld 字节。\n", offsetof(struct addr
2022-04-06 17:09:20
424
原创 小甲鱼__带你学C带你飞___p59随机读写文件
p59 随机读写文件需要移动文件内部的位置指针,再来进行读写。允许从文件的任意位置开始读写位置指针,方便对文件的读写进行控制。系统为每个打开的文件设置了一个位置指示器,主要用于表示当前的读写位置。使用 ftell 函数获取位置指示器的值。# include <stdio.h># include <stdlib.h>int main(void){ /* ftell 函数的返回值是一个long类型的值,因为文件可能会很长, 用long类型的值存储当前的读写位置,从
2022-04-04 19:03:07
551
原创 小甲鱼_带你学C带你飞_p58读写文件2
p58 读写文件2格式化读写文件fscanf 和 fprintf也可以对文件进行读写原先的 scanf 和 printf 可以对终端格式化字符串进行读写。fprintf : 用于打印格式化字符串到指定的文件fscanf : 用于从指定文件中读取格式化字符串将当前的日期获取之后,写入到新创建的文件里去。读取并打印到屏幕上。# include <stdio.h># include <stdlib.h># include <time.h>int
2022-04-04 15:56:22
242
原创 小甲鱼__带你学C带你飞_p57读写文件1
p57读写文件1读写单个字符fgetc 和 getc参数: stream 该参数是一个 FILE 对象的指针,指定一个待读取的文件流fputc 和 putcint fputc(int c, FILE * stream);// c: 指定待写入的字符// stream : 该参数是一个 FILE 对象的指针,指定一个待写入的文件流现在让程序打开一个叫做"hello.txt"的文本文件,然后创建一个"fishc.txt"的文本文件,将"hello.txt"里面的内容写入到"
2022-04-04 11:18:15
222
原创 小甲鱼_带你学C带你飞_p56打开和关闭文件
p56 打开和关闭文件在完成对一个文件的读写操作之后,你必须将其关闭。# include <stdio.h># include <stdlib.h>int main(void){ FILE *fp; int ch; // 接收读取的文件 if( (fp = fopen("hello.txt", "r")) == NULL) // 后一个表示打开的模式,是字符串 { printf("打开文件失败!\n");
2022-04-03 22:04:57
392
原创 Socket应用编程实验(3)
Socket应用编程实验(3)SSL原理比如,Alice 和 Bob 要互相通讯,为了安全,他们希望双方发送的数据都是经过加密的。这就要求双方有一个共同的加解密密钥(一般加密都是基于对称加密算法)。如何才能让双方都拥有同一个密钥呢?第一种方案: 由一方生成发送给另一方就行了。这就带来另一个问题,如何保证这个传送的密钥是安全的?SSL 实现了通过非对称的RSA加解密原理实现密钥的交换(这个密钥是对称的DES密钥)。我们假设Alice 是服务器端,Bob是客户端,然后还有一个可信任的第三方 Ca
2022-04-03 20:03:44
373
原创 Socket应用编程实验(二)
Socket应用编程实验(2)五、申请建立连接在服务器端的函数调用之后,来到客户端编程(read/write),客户端编程相对服务器端简单。(只需要再学一个函数)回顾流程服务器端socket() --> bind() --> listen() --> accept() --> read()/write() --> close()创建套接字、分配套接字地址、等待连接请求状态、允许连接、进行数据交换、断开连接 客户端socket() --> conn
2022-04-03 10:18:43
1390
原创 socket应用编程实验(一)
Socket应用编程实验(1)Socket简介HTTP/HTTPS协议Socket编程实验Socket APIBSD Socket API不是为每个应用程序定义接口,而是提供最基本的通信功能对上层提供统一的调用接口,支持丰富的上层应用开发//=====================BSD Socket API=======================socket(domain,type,proto);close(sockfd);bind(sockfd,
2022-04-02 22:34:16
636
原创 pink老师前端入门p23-p27
4.6图像标签和路径(重点)2.路径之相对路径相对路径: 以引用文件所在位置为参考基础,而建立出的目录路径。简单来说,图片相对于HTML页面的位置。相对路径分类:同一级路径 图像文件位于HTML文件同一级 如 <img src="baidu.gif" />下一级路径 符号 / 图像文件位于HTML文件下一级 如<img src="images/baidu.gif" />上一级路径 符号 ../ 图像文件位于HTML文件上一级 如<img src="../baid
2022-04-01 20:43:48
252
原创 小甲鱼_带你学C带你飞_p43 结构体数组和结构体指针
p43 结构体数组和结构体指针结构体嵌套对于出版日期可以单独为它声明一个结构体类型struct Date{ int year; int month; int day;};# include<stdio.h>struct Date{ int year; int month; int day;}; // 加分号,因为它是一个完整的声明语句struct Book{ char title[128]; char autho
2022-03-28 23:10:46
125
原创 小甲鱼_带你学C带你飞_p42结构体
P42结构体结构体声明语法struct 结构体名称{ 结构体成员1; 结构体成员2; 结构体成员3; ......};// 结构体声明只是进行一个框架的描绘,并不会在内存中分配存储空间// 直到真正定义一个结构体变量的时候,才会在内存中分配空间一本书的结构体声明struct Book //为了与普通变量名和宏名区分开,使用第一个大写的单词,后面小写{ char title[128]; char author[40]; float price
2022-03-28 22:10:53
160
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人