8.8 堆的插入和删除

本文深入探讨了堆数据结构中的两个基本操作——插入新元素和删除元素。堆是一种特殊的树形数据结构,通常用于实现优先队列。在插入过程中,文章详细解释了如何维护堆的性质;在删除元素时,讨论了如何找到最大(或最小)元素并重新调整堆。知识回顾部分总结了堆的原理和应用。
本项目实现一个商品销售系统,系统包括用户、商家两种用户类型。其中,用户可对本人的信息进行管理,并可查询商家信息、下单时间,获取推荐商家信息等,商家可对自身的信息进行管理、处理订单等。相关的表格信息举例如下: 表1 用户信息表 用户账号 用户名 密码 联系方式 0011 张琪 Zhangqi123 13587899990 0022 刘丽 Liuli526 13587899991 wA0033 王新 Wangxin567 13587899992 表2 商家信息表 商家账号 商家名称 产品类型 产品名称 产品价格 评分 地址 001 商家1 文具 文具盒 35 9 浙江温州 001 商家1 文具 卷笔刀 59 9 浙江温州 002 商家2 图书 历史 289 9.5 山东青岛 002 商家2 图书 传记 120 9.5 山东青岛 002 商家2 图书 心理学 100 9.5 山东青岛 003 商家3 文具 纠错本 15 8.5 山东烟台 003 商家3 图书 童书 99 8.5 山东烟台 003 商家3 文具 钢笔 179 8.5 山东烟台 004 商家4 图书 小说 99 8.8 山东潍坊 004 商家4 文具 马克笔 178 8.8 山东潍坊 表3 用户订单表 用户账号 产品名称 商家名称 下单时间 0011 文具盒 商家1 2025.03.14 0022 传记 商家2 2025.02.15 0033 钢笔 商家3 2025.04.14 表4 商家之间距离表 商家ID 商家名称 商家ID 商家名称 商家之间的距离 001 商家1 002 商家2 a 001 商家1 003 商家3 b 002 商家2 003 商家3 c 001 商家1 004 商家4 d 003 商家3 004 商家4 e (二)基本要求 (1)建立商家信息表、商家之间距离信息表、用户信息表。要求:商家至少4个,商家之间距离值自己拟定。 (2)实现表的查找、插入删除操作: ①在商家之间距离信息表中,逐个显示商家之间的距离信息; ②在用户信息表中给定一个用户信息,插入到表中指定的位置; ③在商家信息表中,删除指定位置的商家信息。 (3)利用队列建立用户订单表。要求:用户至少3个。 (4)实现用户订单表的查找、插入删除操作: ①根据用户账号显示用户订单表中的所有信息; ②插入一条用户订单信息; ③删除一条用户订单信息。 (5)根据用户输入的产品类型、产品名称等,通过字符串匹配方法查询符合要求的商家的所有信息。例: 输入:图书、心理学 输出:商家2账号、商家2名称、图书、心理学、100、9.5、山东青岛 (6)将某一商家地址作为起点(源地址),计算并确定到达指定商家的最短路径。比如,求从商家2到达其余商家(商家1、商家3、商家4)的最短路径。商家距离图如下图所示: 图1 商家距离图 (7)为了保证用户密码不被泄密,要求技术人员将密码中的每个字符都用一个二进制位串进行加密。 ①收集字符频率数据: 对于给定的密码字符串,统计每个字符出现的频率。 ②构建哈夫曼树: 将频率作为权值,构建出哈夫曼树。 ③生成哈夫曼编码: 按照哈夫曼树的构造规则(左子树为0,右子树为1),为每个字符生成一个唯一的二进制编码。 ④编码密码: 使用生成的哈夫曼编码对密码字符串进行编码,替换掉每个字符,得到一个二进制串,即为加密后的密码。 (8)任选两个排序方法实现商家的评分排名(例如:冒泡排序、直接插入排序、选择排序、排序、归并排序、希尔排序、快速排序等),例如输出以下内容: 商家3账号、商家3名称、9.5 商家1账号、商家1名称、9 商家4账号、商家4名称、8.8 商家2账号、商家2名称、8.5 使用c++语言实现
06-18
### Ping 命令中的 `-i` 参数详解 Ping 是一种网络工具,用于测试主机之间的连通性响应时间。它通过发送 ICMP 请求并等待目标设备返回 ICMP 回应来工作。 #### 默认行为 当运行 `ping 8.8.8.8` 而不带任何特殊参数时,默认情况下会每隔一秒向目标 IP 地址(这里是 8.8.8.8)发送一个 ICMP 请求包[^1]。具体的行为可能因操作系统而异,但在大多数 Linux 系统中,默认的时间间隔为 1 秒。 #### 使用 `-i` 参数 `-i` 参数允许用户指定两次连续请求之间的时间间隔(单位为秒)。例如,在命令 `ping -i 0.01 8.8.8.8` 中,`-i 0.01` 表示每次发送 ICMP 请求的最小间隔设置为 0.01 秒。这意味着程序将以大约每秒钟 100 次的速度发送 ICMP 请求到目标地址[^1]。 需要注意的是,在某些系统上,如果指定了小于 0.2 秒的时间间隔,则需要超级用户权限才能实现更短的间隔。这是因为频繁地发送大量 ICMP 包可能会对网络造成负担甚至引发拒绝服务攻击的风险。 以下是两个命令的主要区别总结: | 特性 | `ping 8.8.8.8` | `ping -i 0.01 8.8.8.8` | |-------------------|----------------------------------------|-------------------------------------| | 发送频率 | 每隔约 1 秒发送一次 | 每隔约 0.01 秒发送一次 | | 需要特权 | 不需要 | 如果低于默认阈值则需管理员权限 | 这种高频次的 ping 测试可以帮助诊断高负载情况下的网络稳定性或者用来模拟流量压力环境下的表现分析。 ```bash # 示例代码展示如何使用不同的ping选项 $ ping -c 4 8.8.8.8 # 发送四次标准的一秒间隔ICMP回声请求给Google公共DNS服务器 PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: icmp_seq=0 ttl=117 time=12.3 ms ... $ sudo ping -i 0.01 8.8.8.8 # 尝试以非常高的速率进行探测, 可能需要root权限视乎设定. PING 8.8.8.8 (8.8.8.8) ... ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2021、小林子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值