聊城网站制作价格浙江嘉兴网站建设

pingmian/2026/1/23 18:03:58/文章来源:
聊城网站制作价格,浙江嘉兴网站建设,深圳创业板,高端网咖1、用于存放声明的头文件 #ifndef __SEP__LIST__ #define __SEP__LIST__#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h #include assert.h#define MAX_SIZE 10 //使顺序表中可以插入的数据是可以很方便调整的 typedef int DataType;typede…1、用于存放声明的头文件 #ifndef __SEP__LIST__ #define __SEP__LIST__#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h #include assert.h#define MAX_SIZE 10 //使顺序表中可以插入的数据是可以很方便调整的 typedef int DataType;typedef struct SeqList {DataType arr[MAX_SIZE]; //保存顺序表的数据size_t size; //顺序表中元素的个数 }SeqList,*PSeqList;//所有函数中出现的某个元素的位置都指的是它是顺序表第几个元素而不是它在顺序表中的下标值 // 初始化顺序表 void InitSeqList(SeqList* seqList); // 在顺序表的尾部插入元素data void PushBack(SeqList* seqList, DataType data); // 将顺序表尾部的元素抛出 void PopBack(SeqList* seqList); // 顺序表的头部插入元素data void PushFront(SeqList* pSeqList, DataType data); // 顺序表的头部的元素删除 void PopFront(SeqList* pSeqList); // 顺序表中查找数据data返回该元素在顺序表中的位置 int Find(SeqList* pSeqList, DataType data); // 在顺序表的ipos位置上插入元素data void Insert(SeqList* pSeqList, size_t pos, DataType data); // 删除顺序表pos位置上的元素 void Erase(SeqList* pSeqList, size_t pos); // 移除顺序表中的元素data void Remove(SeqList* pSeqList, DataType data); // 移除顺序表中的所有值为data的元素 void RemoveAll(SeqList* pSeqList, DataType data); // 选择排序 void SelectSort(SeqList* pSeqList); // 冒泡排序 void BorbbleSort(SeqList* pSeqList); // 查找已序顺序表中的元素data int BinarySearch(SeqList* pSeqList, DataType data); // 打印顺序表 void PrintSeqList(SeqList* pSeqList);#endif 2、用于实现声明的.c文件 #include Seq_List.hvoid InitSeqList(SeqList* seqList) {assert(seqList);memset(seqList, 0, sizeof(DataType)*MAX_SIZE);seqList-size 0; //使最开始的数据是从顺序表的第一个位置开始插入的 }void PushBack(SeqList* seqList, DataType data) {assert(seqList);if (MAX_SIZE seqList-size){printf(顺序表已满不能再插入数据。\n);return;}seqList-arr[seqList-size] data;seqList-size; }void PopBack(SeqList* seqList) {assert(seqList);if (0 seqList-size){printf(顺序表是空的不能抛出数据。\n);return;}seqList-size--; //虽然此时顺序表的存储的数据元素并没有被真是的删除但是因为顺序表中此时的元素个数少了一个//使最后的那个元素相当于无效元素这就达到了删除的效果 }void PushFront(SeqList* pSeqList, DataType data) {size_t index pSeqList-size;assert(pSeqList);if (MAX_SIZE pSeqList-size){printf(顺序表已满不能插入数据。\n);return;}for (; index 0; index--){pSeqList-arr[index] pSeqList-arr[index - 1];//因为是从顺序表的第一个位置开始插入元素因此顺序表中原有的所有元素都要向后挪一个位置避免被覆盖}pSeqList-arr[index] data;pSeqList-size; }void PopFront(SeqList* pSeqList) {size_t index 1;assert(pSeqList);if (0 pSeqList-size){printf(顺序表是空的不能抛出数据。\n);return;} for (; index pSeqList-size; index){pSeqList-arr[index-1] pSeqList-arr[index];//此处的index初始化为1并且在操作时是对index-1而没有执行index1操作是因为害怕数组下标越界}pSeqList-size--; }int Find(SeqList* pSeqList, DataType data) {size_t index 0;assert(pSeqList);for (; index pSeqList-size; index ){if (pSeqList-arr[index] data){return index 1; //位置应该是从1开始的不会存在从0开始的位置所以位置应该是下标加1}}return -1; //位置不会是负数所以当返回为负数时就可以知道顺序表中不存在要找的数据 }void Insert(SeqList* pSeqList, size_t pos, DataType data) {size_t index pSeqList-size;assert(pSeqList);if (pos pSeqList-size){printf(插入位置不合法。);//要保证数据元素插入后所有元素都是连续的否则不能叫作顺序表return;}if (MAX_SIZE pSeqList-size){printf(顺序表已满不能插入数据。\n);return;}for (; index pos; index--){pSeqList-arr[index] pSeqList-arr[index - 1];//把插入位置及其后面的元素整体向后挪一个元素的位置用来存放插入的元素}pSeqList-arr[index] data;pSeqList-size; }void Erase(SeqList* pSeqList, size_t pos) {size_t index pos-1;assert(pSeqList);if (pos pSeqList-size){printf(该位置没有存储数据元素。);return;//若果此处不这样处理下面的pSeqList-size-1会溢出}for (; index pSeqList-size-1; index){pSeqList-arr[index] pSeqList-arr[index 1];//此时不会发生数组下标越界因为index最多到size-2那么index1最多到size-1不会越界}pSeqList-size --;//当pos pSeqList-size时不会进入循环但这样也不会出错因为它后面没有元素了那么就不需要经过循环把元素//前移直接把元素个数减1即可 }void Remove(SeqList* pSeqList, DataType data) {size_t index 0;size_t temp 0;assert(pSeqList);for (; index pSeqList-size; index){if (pSeqList-arr[index] data){for (temp index; temp pSeqList-size - 1; temp){pSeqList-arr[temp] pSeqList-arr[temp 1];}//当在顺序表中找到了该数时就把该数之后的所有元素全部向前挪一个元素的位置把原数据覆盖即可达到移除的目的pSeqList-size--;//当要删除的数在顺序表中最后一个位置时index pSeqList-size-1,因此不会进入循环但因为该数后面就//没有数据了所以此时的移除方法是直接把该顺序表的元素个数减1使该元素成为无效元素即可达到删除的目的return;}} }void RemoveAll(SeqList* pSeqList, DataType data) {size_t index 0;size_t rem 0;assert(pSeqList);for (; index pSeqList-size; index){if (pSeqList-arr[index] data){for (rem index; rem pSeqList-size - 1; rem) //可以考虑是否可以递归{pSeqList-arr[rem] pSeqList-arr[rem 1];}//当在顺序表中找到了该数时就把该数之后的所有元素全部向前挪一个元素的位置把原数据覆盖即可达到移除的目的pSeqList-size--;index--;//index--是因为删除一个元素之后后面的元素都会前移那么可能前移元素中的最前面的元素和我们要删除的元素//的值是一样的而此时index了它的值是前移元素中的第二个元素的值因此要给index--使它的值为前移元素//中的第一个元素的值//因为这个函数是要删除顺序表中所有的值为data的元素所以在这儿不能直接删除一个就返回了而是知道遍历所有//元素删除对应的元素才会返回}} }void Swap(int *num1, int *num2) {int temp *num1; //变量是在需要交换两个元素位置时充当临时变量的因为也不知道元素的符号所以用int类型而非size_t*num1 *num2;*num2 temp; }void SelectSort(PSeqList pSeqList) {size_t num 0;size_t index 0;size_t end pSeqList-size;assert(pSeqList);for (; num pSeqList-size / 2; num){size_t min num;size_t max num;for (index num 1; index end; index){min pSeqList-arr[min] pSeqList-arr[index] ? min : index;max pSeqList-arr[max] pSeqList-arr[index] ? max : index;//每次比较两个元素把比较完成后最小和最大的元素的下标保存起来下一次比较时比较的两个对象分别是保存的下//标对应的元素和还没有进行比较的所有元素中最前面的那一个元素(当然也可以是未进行比较的所有元素中的任意一个)}Swap(pSeqList-arr[min], pSeqList-arr[num]);Swap(pSeqList-arr[max], pSeqList-arr[--end]); //注意这儿的--end是为了使下一次循环里的比较范围缩小//同时也为了这儿取得是正确的下标值//把最小和最大的元素交换到对应的位置去} }void BorbbleSort(PSeqList pSeqList) //排序为从小到大 {size_t index 0;size_t num 0;int flag 1;assert(pSeqList);while (flag 1) //对冒泡排序的优化当某一趟排序时发现没有发生交换的情况说明此时已经排序成功那么就可以//不用再进入下一趟排序直接跳出循环执行下面的操作{for (; num pSeqList-size - 1; num) //思考冒泡排序两个循环的次数个应该各是多少{for (index 0; index pSeqList-size - num - 1; index) //不减1可能会造成越界访问{if (pSeqList-pData[index]pSeqList-pData[index 1]){Swap(pSeqList-pData[index], pSeqList-pData[index 1]);//每次比较相邻两个元素若前面的元素大于后面的则交换两个元素的位置flag 1;}}}} }int BinarySearch(SeqList* pSeqList, DataType data) //二分法在顺序表中找一个数 {int left 0;int right pSeqList-size - 1;assert(pSeqList);if (pSeqList-size 0){return -1;//因为此时顺序表里没有数据而pSeqList-size是无符号整型减1的话出来的值是一个非常大的值所以为了//保证函数的正确性在顺序表无数据时直接返回}while (left right) //注意right的取值对此处是用left right还是left right的影响{int mid left (right-left) / 2; //没有写成mid (left right) / 2是因为害怕怕两数直接相加会溢出if (pSeqList-arr[mid] data){return mid;}else if (pSeqList-arr[mid] data){right mid - 1; //因为排序的函数是把顺序表的元素由小到大排列的}else{left mid 1;}}return -1; //当没有找到要查找的数时返回一个负值以声明要查找的元素在顺序表中不存在因为要是找到了//返回一个数的位置那么不会小于0 }void PrintSeqList(SeqList* pSeqList) {size_t index 0;for (; index pSeqList-size; index){printf(%d , pSeqList-arr[index]);}printf(\n); } 3、用于测试函数正确性的Test.c文件 #include Seq_List.hSeqList seqList;//测试尾插与尾删函数 void TestFun1() {InitSeqList(seqList);PushBack(seqList, 1);PushBack(seqList, 2);PushBack(seqList, 3);PushBack(seqList, 4);PrintSeqList(seqList);PopBack(seqList);PopBack(seqList);PrintSeqList(seqList); }//测试头插与头删函数 void TestFun2() {InitSeqList(seqList);PushFront(seqList, 1);PushFront(seqList, 2);PushFront(seqList, 3);PushFront(seqList, 4);PrintSeqList(seqList);PopFront(seqList);PopFront(seqList);PrintSeqList(seqList); }//测试任意位置查找插入删除函数 void TestFun3() {int ret 0;InitSeqList(seqList);PushFront(seqList, 1);PushFront(seqList, 2);PushFront(seqList, 3);PushFront(seqList, 4);ret Find(seqList, 4);Insert(seqList, 3, 5);Erase(seqList, 5);printf(%d\n, ret);PrintSeqList(seqList); }//测试移除函数 void TestFun4() {InitSeqList(seqList);PushFront(seqList, 1);PushFront(seqList, 2);PushFront(seqList, 2);PushFront(seqList, 4);PushFront(seqList, 1);PushFront(seqList, 2);PushFront(seqList, 2);PushFront(seqList, 4);Remove(seqList, 2);PrintSeqList(seqList);RemoveAll(seqList, 2);PrintSeqList(seqList); }//测试排序与二分查找函数 void TestFun5() {int ret 0;InitSeqList(seqList);PushFront(seqList, 3);PushFront(seqList, 9);PushFront(seqList, 1);PushFront(seqList, 4);PushFront(seqList, 2);PushFront(seqList, 8);PushFront(seqList, 7);PushFront(seqList, 0);SelectSort(seqList);//BorbbleSort(seqList);ret BinarySearch(seqList, 5);printf(%d\n, ret);PrintSeqList(seqList); }int main() {//TestFun1();//TestFun2();//TestFun3();//TestFun4();TestFun5();system(pause);return 0; }

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

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

相关文章

邢台优化网站排名周村区住房和城乡建设厅网站

什么是α射线、β射线、γ射线 https://www.sohu.com/a/230945619_1001247211、α射线 放射性核素发生衰变时放出α粒子,产生α射线。α粒子是一个高速运动的氦原子核。对于天然放射系列的核素放出α粒子的能量一般在4~8兆电子伏(MeV)范围,初…

一键制作单页网站小吃培训去哪里学最好

OSI七层模型 和 TCP/IP四层模型 数据传输单位、对应的设备 物理层:网线 数据链路层:网卡、网桥、交换机 网路层:路由器、网关 网卡的作用 网卡(Network Interface Card, NIC)是计算机上用于连接网络的硬件设备。 网卡是计算机连接网络、传…

网站建设接活appwordpress 安装ssl

文章目录1、Bean的配置1.1、配置方式2、Bean的实例化2.1、构造器实例化2.2、静态工厂方式实例化2.3、实例工厂方式实例化3、Bean的作用域3.1、作用域的种类4、Bean的生命周期5、Bean的装配方式5.1、基于XML的装配5.2、基于Annotation的装配5.3、自动装配1、Bean的配置 1.1、配…

搜索引擎网站建设公司文件怎么添加到wordpress

连锁便利店管理系统对于连锁便利店的运营和管理非常有用。以下是一些常见的用途: 1. 库存管理:连锁便利店通常需要管理多个门店的库存,管理系统可以帮助实时掌握各个门店的库存情况,包括商品数量、进货记录、库存调拨等。这样可以…

知乎 网站建设wordpress简体中文版下载

2023年中职组“网络安全”赛项 云南省竞赛任务书 一、竞赛时间 总计:360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 A-5 服务加固…

做展示型企业网站平面设计网课平台哪个好

目录 一、平台 二、数据 三、代码 3.1 文件组织结构 3.2 lasDataLoader.py 读取数据 3.3 修改原始模型的通道数量 3.4 lasTrainSS.py【训练】 3.5 lasTestSS.py【预测】 一、平台 Windows 10 GPU RTX 3090 CUDA 11.1 cudnn 8.9.6 Python 3.9 Torch 1.9.1 cu111…

网站下载的app删除了怎么找到昆明建站专家

交换文件 *.swp 格式 同时是隐藏的 如在vim一个文件, 在没有正常退出, 如直接断开连接 在次编辑这个文件 会出现下图的错误 解决方案: 直接删除这个交换文件即可 rm -fr .zen.txt.swp

东莞网站建设平台培训教育机构

练习九-利用状态机实现比较复杂的接口设计 1,任务目的:2,RTL代码3,RTL原理框图4,测试代码5,波形输出 1,任务目的: (1)学习运用状态机控制的逻辑开关&#xff…

响应式网站开发教程pdf最新新闻热点事件素材2022

BackPressure详细介绍 文章目录BackPressure详细介绍前言什么是反压?为什么需要关注反压?为什么不需要关注反压?如何发现和追踪反压的根源?反压的坏处经常碰到哪些问题会任务反压怎么处理反压?前言 Flink反压已经是老…

高端网站建设费用情况跑步机 东莞网站建设

目录 Date 对象 1. 获取当前时间 2. 获取特定日期时间 Date 对象的方法 1. 获取各种日期时间组件 2. 获取星期几 3. 获取时间戳 格式化日期时间 1. 使用 toLocaleString() 方法 2. 使用第三方库 UNIX 时间戳 内部表示 时区 Date 对象 JavaScript中内置的 Date 对象…

扬中网站建设流程网站文件夹目录

Android Termux 安装Kali Linux 或 kali Nethunter史诗级详细教程 一、Termux配置1、下载安装2、配置存储和换源3、基本工具安装 二、Kali Linux安装1、下载安装脚本2、更换apt源3、图形化安装 三、Kali Nethunter安装1、下载安装脚本2、更换apt源3、图形化连接 四、报错汇总1、…

本溪北京网站建设注销备案号 网站

什么时候会用到参数化 比如:一个模块要用多组不同数据进行测试 验证业务的正确性 Login模块:正确的用户名,密码 成功;错误的用户名,正确的密码 失败 postman实现参数化 在实际的接口测试中,部分参数…

免费注册网站专业app定制开发公司

原文转自 http://www.cnblogs.com/xilentz/archive/2010/05/06/1728945.html 收藏起来用的时候比较方便 TotoiseSVN的基本使用方法在 项目管理实践教程一、工欲善其事,必先利其器【Basic Tools】中,我已经讲解了怎样安装TortoiseSVN。在上面的讲解中已经…

自己做代练网站红色网站建设

目录 易混淆物理层数据链路层网络层nat如何实现私有ip通信IP数据报 格式解析tcp 连接tcp流量控制滑动窗口拥塞控制 报文捕获 wireshark路由模拟器 enspcdn代理服务器 VS cdn VS web cache 计算机有了物理地址,为什么还要有ip地址?单播 多播 广播 传输层会…

模板网站和插件灵动网站建设

我们都知道进程信息被放到了PCB(task_struct)中,可以理解为进程属性的集合。 PCB中包含了进程的ID,时间片,pc指针,所有的寄存器,进程状态、优先级、I/O状态信息等等...有兴趣的可以去看看源码&…

宁波市江北区建设局网站ppt电子商务网站建设

weapp-tailwindcss for uni-app 样式条件编译语法插件 版本需求 2.10.0 weapp-tailwindcss for uni-app 样式条件编译语法插件 这是什么玩意?如何使用 tailwind.config.js 注册postcss 插件注册 uni-app vite vue3uni-app vue2 配置完成 配置项 这是什么玩意? 在 uni-app …

网站建设app开发合同苏州沧浪区做网站的

文章目录 查看哪些端口被禁用TCP协议删除开机启动项方案1方案2 查看哪些端口被禁用TCP协议 netsh interface ipv4 show excludedportrange protocoltcp删除开机启动项 方案1 列出所有启动项 bcdedit /enum仔细看你要删除的是哪一项(看description)&a…

怎样开通网站网站有哪些备案

jExcelApi Java 操作 Excel 的类库Java Excel API(JXL)是一个成熟,开源的用来操作Excel电子表格的Java类库,支持读取,修改,写入等操作。这个项目基于GPL发布,而且对中文有很好的支持。● 支持字体、数字、日期操作● 能够修饰单元…

如何做某网站的移动客户端开发重庆做个网站多少钱

Kafka 集群中有一个 broker 会被选举为 Controller,负责管理集群 broker 的上下线,所有 topic 的分区副本分配和 leader 选举等工作。 Controller 的管理工作都是依赖于 Zookeeper 的。 以下为 partition 的 leader 选举过程: Leader选举流…

阜宁做网站网站建设哪家好建议兴田德润

MYSQL优化是一个非常大的课题,这篇文章主要介绍了跟MYSQL相关的4个方面,如果想深入研究可以查下相关资料。一、服务器级别优化二、操作系统级别优化三、MYSQL级别优化四、SQL级别优化一、服务器级别优化1.服务器选型SUN小型机、DELL730xd、HPDL380、IBM3…