哪个建立网站好个人网上卖货的平台

news/2025/9/27 18:50:33/文章来源:
哪个建立网站好,个人网上卖货的平台,衡阳网站建设衡阳千度网络,如何做网络销售平台#x1f497;个人主页#x1f497; ⭐个人专栏——数据结构学习⭐ #x1f4ab;点击关注#x1f929;一起学习C语言#x1f4af;#x1f4ab; 导读#xff1a; 我们在前面学习了单链表和顺序表#xff0c;以及栈和队列。 今天我们来学习小堆。 关注博主或是订阅专栏个人主页 ⭐个人专栏——数据结构学习⭐ 点击关注一起学习C语言 导读 我们在前面学习了单链表和顺序表以及栈和队列。 今天我们来学习小堆。 关注博主或是订阅专栏掌握第一消息。 1. 堆的概念及结构 现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事一个是数据结构一个是操作系统中管理内存的一块区域分段。 1.1 什么是堆 堆是一种特殊的数据结构它可以看做是一个完全二叉树或者近似二叉树其中每个节点的值都大于等于或小于等于其子节点的值。在一个最大堆中根节点的值是最大的在一个最小堆中根节点的值是最小的。 1.2 堆的特点 堆的主要特点是每个节点的值都大于等于或小于等于其子节点的值。这种特点使得堆可以快速找到最大或最小的元素。另外堆还可以用于排序和优先队列等应用。 堆中兄弟节点的值之间没有关联。在堆中节点之间的关系仅由其在树中的位置决定。 1.3 堆的结构 堆通常使用数组来实现数组的下标代表节点在堆中的位置。根据节点在数组中的位置可以通过简单的计算得到其父节点、左子节点和右子节点的位置。这样在堆中插入一个新元素、删除堆顶的元素或者调整堆的结构时只需要对数组进行简单的操作而不需要改变整个堆的结构。 2. 堆的实现 我们需要创建两个 C文件: study.c 和 Heap.c以及一个 头文件 Heap.h。 头文件来声明函数一个C文件来定义函数另外一个C文件来用于主函数main进行测试。 堆的常见操作包括插入元素、删除堆顶元素、堆化调整堆的结构使其满足堆的特点等。其中插入元素和删除堆顶元素的时间复杂度为O(logn)堆化的时间复杂度为O(nlogn)。 3. 代码实现 3.1 定义结构体 Heap.h typedef int HPDataType; typedef struct Heap {HPDataType* a;int size; //记录数组内的有效数据int capacity; //记录数组空间大小 }HP;3.2 堆的初始化 Heap.h //堆的初始化 void HeapInit(HP* php);Heap.c //堆的初始化 void HeapInit(HP* php) {//各值初始化为0assert(php);php-a NULL;php-size 0;php-capacity 0; }3.3 堆的销毁 我们的数组空间是用malloc函数开辟的使用完之后需要进行释放。 Heap.h // 堆的销毁 void HeapDestroy(HP* php);Heap.c // 堆的销毁 void HeapDestroy(HP* php) {assert(php);free(php-a);php-a NULL;php-size 0;php-capacity 0; }3.4 向上调整父节点与子节点 在出入数组后我们需要对数组进行调整以实现堆的结构特点。 在数组中下标*21就是他的子节点同样的下标-1/2就是他的父节点。 Heap.h //向上调整父节点与子节点 void AdjustUp(HPDataType* a, int child);Heap.c //交换父节点和子节点的值 void Swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; } //向上调整父节点与子节点 void AdjustUp(HPDataType* a, int child) {assert(a);int parent (child - 1) / 2;//找到父节点while (child 0){//查看父亲节点与孩子节点的值//若小则替换否则就结束循环if (a[child] a[parent]){Swap(a[child], a[parent]);child parent;parent (child - 1) / 2;}else{break;}} }3.5 堆的插入 Heap.h // 堆的插入 void HeapPush(HP* php, HPDataType x);Heap.c // 堆的插入 // 堆的插入 void HeapPush(HP* php, HPDataType x) {assert(php);//首先检查数组容量是否足够if (php-size php-capacity){int newcapacity php-capacity 0 ? 4 : php-capacity * 2;HPDataType* tmp (HPDataType*)realloc(php-a, sizeof(HPDataType) * newcapacity);if (tmp NULL){perror(realloc fail);return;}php-a tmp;php-capacity newcapacity;}php-a[php-size] x;//在插入数值后需要检查是否要进行调整AdjustUp(php-a, php-size);php-size; }3.6 向下调整父节点与子节点 删除堆是删除堆顶的数据但是我们无法直接删除第一个元素这有极大的可能会使我们的堆崩溃不再具有堆的特点而在删除之后把其它数值都往前移动再进行调整是一项很大的工作量。 所以我们可以将堆顶的数据根最后一个数据一换然后删除数组最后一个数据再进行向下调整算法。将当前的根数值调整到符合堆特点的位置去。 Heap.h //向下调整父节点与子节点 void AdjustDown(int* a, int size, int parent);Heap.c //向下调整父节点与子节点 void AdjustDown(int* a, int size, int parent) {assert(a);int child parent * 2 1;//找到孩子节点while (child size){//找孩子中较小的一个if ((a[child] a[child 1]) (child 1) size){child 1;}//判断两个大小进行交换if (a[parent] a[child]){Swap(a[child], a[parent]);parent child;child parent * 2 1;}else{break;}} }3.7 堆的删除 Heap.h // 堆的删除 void HeapPop(HP* php);Heap.c // 堆的删除 void HeapPop(HP* php) {assert(php);//先检查数组是否有可删除的数据assert(php-size 0);//交换首尾元素Swap(php-a[php-size - 1], php-a[0]);php-size--;//向下进行调整AdjustDown(php-a, php-size, 0);} 3.8 获取堆顶元素 返回数组首元素即可 Heap.h // 取堆顶的数据 HPDataType HeapTop(HP* php);Heap.c // 取堆顶的数据 HPDataType HeapTop(HP* php) {assert(php);return php-a[0]; }3.9 获取堆的个数 直接返回size的值即可 Heap.h // 堆的数据个数 size_t HeapSize(HP* php);Heap.c // 堆的数据个数 size_t HeapSize(HP* php) {assert(php);return php-size; }3.10 堆的判空 只需判断size的值是否为0如果是返回true反之返回false。 Heap.h // 堆的判空 bool HeapEmpty(HP* php);Heap.c // 堆的判空 bool HeapEmpty(HP* php) {assert(php);return php-size 0; }4. 代码整理 4.1 Heap.h #define _CRT_SECURE_NO_WARNINGS #pragma once #include stdio.h #include stdlib.h #include assert.h #include stdbool.htypedef int HPDataType;typedef struct Heap {HPDataType* a;int size; //记录数组内的有效数据int capacity; //记录数组空间大小 }HP;//堆的初始化 void HeapInit(HP* php);// 堆的销毁 void HeapDestroy(HP* php);// 堆的插入 void HeapPush(HP* php, HPDataType x);// 堆的删除 void HeapPop(HP* php);// 取堆顶的数据 HPDataType HeapTop(HP* php);// 堆的数据个数 size_t HeapSize(HP* php);// 堆的判空 bool HeapEmpty(HP* php);//向上调整父节点与子节点 void AdjustUp(HPDataType* a, int child);//向下调整父节点与子节点 void AdjustDown(int* a, int size, int parent);//交换父节点和子节点的值 void Swap(int* child, int* parent);4.2 Heap.c #include Heap.h//堆的初始化 void HeapInit(HP* php) {//各值初始化为0assert(php);php-a NULL;php-size 0;php-capacity 0; }// 堆的销毁 void HeapDestroy(HP* php) {assert(php);free(php-a);php-a NULL;php-size 0;php-capacity 0; }//交换父节点和子节点的值 void Swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; } //向上调整父节点与子节点 void AdjustUp(HPDataType* a, int child) {assert(a);int parent (child - 1) / 2;//找到父节点while (child 0){//查看父亲节点与孩子节点的值//若小则替换否则就结束循环if (a[child] a[parent]){Swap(a[child], a[parent]);child parent;parent (child - 1) / 2;}else{break;}} } // 堆的插入 void HeapPush(HP* php, HPDataType x) {assert(php);//首先检查数组容量是否足够if (php-size php-capacity){int newcapacity php-capacity 0 ? 4 : php-capacity * 2;HPDataType* tmp (HPDataType*)realloc(php-a, sizeof(HPDataType) * newcapacity);if (tmp NULL){perror(realloc fail);return;}php-a tmp;php-capacity newcapacity;}php-a[php-size] x;//在插入数值后需要检查是否要进行调整AdjustUp(php-a, php-size);php-size; }//向下调整父节点与子节点 void AdjustDown(int* a, int size, int parent) {assert(a);int child parent * 2 1;//找到孩子节点while (child size){//找孩子中较小的一个if ((a[child] a[child 1]) (child 1) size){child 1;}//判断两个大小进行交换if (a[parent] a[child]){Swap(a[child], a[parent]);parent child;child parent * 2 1;}else{break;}} }// 堆的删除 void HeapPop(HP* php) {assert(php);//先检查数组是否有可删除的数据assert(php-size 0);//交换首尾元素Swap(php-a[php-size - 1], php-a[0]);php-size--;//向下进行调整AdjustDown(php-a, php-size, 0);}// 取堆顶的数据 HPDataType HeapTop(HP* php) {assert(php);return php-a[0]; }// 堆的数据个数 size_t HeapSize(HP* php) {assert(php);return php-size; }// 堆的判空 bool HeapEmpty(HP* php) {assert(php);return php-size 0; }4.3 study.c void Test1() {int array[] { 27,15,19,18,28,34,65,49,25,37 };HP hp;HeapInit(hp);for (int i 0; i sizeof(array) / sizeof(int); i){HeapPush(hp, array[i]);//插入数据}int k HeapSize(hp);while (k--){printf(%d , HeapTop(hp));HeapPop(hp);}HeapDestroy(hp); }int main() {;Test1();return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/919812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

# Windows CMD 基本指令参考手册

Windows CMD 基本指令参考手册常用命令提示符指令速查指南,包含直接复制功能Windows 命令提示符(CMD)是一个强大的工具,可以让您通过输入命令来执行各种系统操作。本参考手册整理了最常用的 CMD 指令,方便您快速查…

P13019 [GESP202506 八级] 树上旅行

解题思路 这个问题需要在有根树上模拟移动操作,但直接模拟会超时(因为移动次数可能很大)。核心思想是使用二进制提升(Binary Lifting)技术来优化移动过程。 关键观察:向上移动(移动到父节点):可以使用倍增表 …

完整教程:负载均衡式的在线OJ项目编写(二)

完整教程:负载均衡式的在线OJ项目编写(二)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

Java语法基础课程动手动脑及课后实验问题整理文档

一、编程思维与项目分解相关按照“将整个程序分成若干个组件(分解);将多次出现的相似功能设成独立的方法(模式识别、抽象、算法);调试每个独立组件的健壮性(单元测试);按照功能要求进行组件组合(整合);再测…

安装包制作流程-final

1.给项目exe文件添加 管理员权限添加清单文件:在 Visual Studio 中,右键点击你的 WPF 项目,选择“添加” > “新建项”,然后选择“应用程序清单文件 (app.manifest)”并添加。如果已存在该文件,此步骤可省略。…

让YOLO飞起来:从CPU到GPU的配置指南

最近在配置YOLO(You Only Look Once)进行物体检测和图像分割任务时,发现默认安装的情况下,YOLO使用的是CPU进行计算。 这对于需要处理大量图像或实时检测的任务来说,效率明显不足。 本文将详细介绍如何将YOLO从CP…

记录这辈子见到的第一道从上到下的树上倍增

这道题先是浪费我半个下午做,做不出来有时好久看题解实现,气死我了。 题意。 给定一张 \(N\) 点的树,让我们考虑断掉每一条边,统计分裂出的两个子树的重心编号和之和。 要求 \(O(nlogn)\) 或更优的时间复杂度。 做…

忘形篇

忘形篇先想想暴力怎么做

06.容器存储 - 教程

06.容器存储 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "C…

fm网站开发有源码怎么搭建网站

文章来源:http://blog.csdn.net/edeed/archive/2006/02/10/596271.aspx 1、安装PD v11.0版 2、由pdm生成建表脚本时,字段超过15字符就发生错误(oracle) 原因未知,解决办法是打开PDM后,会出现Database的菜单…

电子商务网站如何进行维护和推广建设部网站官网挂证通报

ARM32位系统的内存布局图 32位操作系统的内存布局很经典,很多书籍都是以32位系统为例子去讲解的。32位的系统可访问的地址空间为4GB,用户空间为1GB ~ 3GB,内核空间为3GB ~ 4GB。 为什么要划分为用户空间和内核空间呢? 一般处理器…

一般路人向第39次CSP认证

一般路人向第39次CSP认证Q1 第一题十分水,照着他意思来就行了,十来分钟写出来交上去,不行。反复确认直到半个小时,发现交到第二题上去了。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int m, n; do…

1748:约瑟夫问题

题目 总时间限制: 1000ms 内存限制: 65536kB 描述 约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样…

做报名统计的网站微门户网站建设

前面两篇文章记录了 Spring IOC 的相关知识&#xff0c;本文记录 Spring 中的另一特性 AOP 相关知识。 部分参考资料&#xff1a; 《Spring实战&#xff08;第4版&#xff09;》 《轻量级 JavaEE 企业应用实战&#xff08;第四版&#xff09;》 Spring 官方文档 W3CSchool Spri…

net网站开发教程简易微网站模板

构造器最大的作用:创建对象. 为什么使用反射创建对象,为什么不直接来new呢? 在框架中,提供给我们的都是字符串. ----------------------------------------------------------- 使用反射创建对象: 步骤: 1);找到构造器所在类的字节码对象. 2):获取构造器对象. 3):使用反射…

安全可信网站营销活动策划方案模板

前言 Python可以用于复杂的数据分析和Web开发项目&#xff0c;还能以极少的代码行数完成令人惊叹的任务。本文将分享25个简短的Python代码示例&#xff0c;用来展示Python编程语言的魅力和效率。 1.列表推导式 Python的列表推导式提供了一种优雅的方法来创建列表。 # 将一个…

完整教程:微论-神经网络的亲情密码,权重矩阵的家庭关系论

完整教程:微论-神经网络的亲情密码,权重矩阵的家庭关系论2025-09-27 18:26 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importan…

Ansible + Docker 部署 Apache Nifi 1.28 单用户集群

Ansible + Docker 部署 Apache Nifi 1.28 单用户集群1. 准备工作 1.1 主机列表IP 主机名 内存(GB) CPU核数 磁盘 操作系统 CPU 架构10.0.0.13 arc-pro-dc01my.registry.com 16 1 500GB CentOS 7.9.2009 x86_6410.0.…

候机的队伍

候机的队伍今天乘机,小朋友们很激动地早早地去排队了。我苦口婆心地教育他们,不需要这么早排队。因为座位都是固定的,而需要早排队的理由只有两个: 1. 带了较多行李,需要早点登机占个位置。 2. 缓解焦虑,早点坐上…

个人网站怎么做支付功能抖音代运营合作协议免费

聚苯乙烯&#xff08;Polystyrene&#xff0c;简称PS&#xff09;是一种常见的合成聚合物&#xff0c;属于热塑性塑料。它是由苯乙烯单体聚合而成的&#xff0c;具有轻质、透明或半透明、电绝缘性好等特点。常见: 包装材料白色泡沫塑料&#xff08;EPS&#xff0c;用于包装、保…