数据结构学习系列之顺序表的查找与排序以及去重

  • 顺序表的查找:
  • 根据顺序表中数据元素的位置进行查找,代码如下:
  • 示例代码:
int search_seq_list(list_t *seq_list,int pos,int *num){if(NULL == seq_list || NULL == num){printf("内存分配失败\n");return -1;}if( pos < 0 || pos >= seq_list->count){printf("查找位置不合理,查找失败\n");return -1;}*num = seq_list->a[pos].num;return 0;
}
  • 注意事项:
  • 1.形参传入到具有查找数据元素功能的函数后,需要做入参合理性检查,比如函数中的形参seq_list和num
  • 2.判断所要查找数据元素的位置在顺序表中是否合理,if条件语句内容和任意位置删除功能函数一致;
  • 顺序表的排序:
  • 根据顺序表中每个数据元素的大小,对数据元素做冒泡排序,代码如下:
  • 示例代码:
int sort_seq_list(list_t *seq_list){if(NULL == seq_list){printf("入参为NULL\n");return -1;}for(int i = 0 ; i < seq_list->count - 1; i++){for(int j = 0; j < seq_list->count - 1 - i; j++ ){if(seq_list->a[j].num > seq_list->a[j+1].num){data_t temp = seq_list->a[j];seq_list->a[j] = seq_list->a[j+1];seq_list->a[j+1] = temp;}}}printf("本次排序结束\n");return 0;
}
  • 注意事项:
  • 1.定义一个结构体变量,作为第三方变量,根据if条件语句交换两个数据元素的位置
  • 2.注意越界问题,比如第二层for循环j < seq_list->count - 1 - i;-1是为了防止越界
  • 顺序表的去重:
  • 剔除顺序表中的重复的数据元素,例如:
11 33 55 55 66 66 66 66 
本次去重结束
11 33 55 66 
  • 示例代码:
int del_rep_seq_list(list_t *seq_list){if(NULL == seq_list){printf("入参为NULL\n");return -1;}for(int i = 0; i < seq_list->count; i++){for(int j = i + 1; j < seq_list->count;){if(seq_list->a[i].num == seq_list->a[j].num){for(int k = j; k < seq_list->count-1; k++){seq_list->a[k] = seq_list->a[k+1];}seq_list->count--;} else {j++;}}}printf("本次去重结束\n");return 0;
}
  • 注意事项:
  • 1.第二层for循环是为了在顺序表中寻找相同的数据元素
  • 2.顺序表去重的具体操作方法和在顺序表的任意位置删除数据元素操作一致

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

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

相关文章

c++ set/multiset

set/multiset 集合&#xff0c;一个单个&#xff0c;一个多个(multi)。两个库都是"set"。 https://blog.csdn.net/fckbb/article/details/130917681 对象创建 set(const Pred& compPred()&#xff0c;const A& alA()):创建空集合。set(const set& x):…

HTTP协议初识·中篇

加上目录&#xff0c;会出现导向不正确的情况&#xff0c;可能是bug&#xff0c;目录一长就容易出错&#xff1f; 本篇主要讲解了&#xff1a; 网页分离(网页代码和.c文件分离) html链接跳转 网页添加图片 确认并返回资源类型 填写正文长度属性 添加表单 临时重定向 补充知识&a…

06-限流策略有哪些,滑动窗口算法和令牌桶区别,使用场景?【Java面试题总结】

限流策略有哪些&#xff0c;滑动窗口算法和令牌桶区别&#xff0c;使用场景&#xff1f; 常见的限流算法有固定窗口、滑动窗口、漏桶、令牌桶等。 6.1 固定窗口 概念&#xff1a;固定窗口&#xff08;又称计算器限流&#xff09;&#xff0c;对一段固定时间窗口内的请求进行…

通过ref 操作dom , 点击按钮后跳转到页面指定图片位置

滚动图片到视图 定义了一个名为 scrollToIndex 的函数&#xff0c;它接受一个参数 index。当按钮被点击时&#xff0c;这个函数会被调用&#xff0c;并根据传入的 index 值来滚动到对应的图片。 以 alt 来标记图片位置 alt“Tom” import { useRef } from "react";c…

国标视频云服务EasyGBS国标视频平台迁移服务器后无法启动的问题解决方法

国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入&#xff0c;并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强&#xff0c;支持将接入的视频流进行全终端、全平台分发&#xff0c;分发的视频…

双指针——力扣刷题

同向双指针 一般是滑动窗口&#xff0c;子数组类型 做法&#xff1a;一般我们遍历右端点&#xff0c;然后根据条件滑动左端点。左右端点均只向右移动。 要求&#xff1a;左端点向右滑动到某一位置后不可能在下一个枚举的右端点时&#xff0c;发生左移现象。 相向双指针 适用…

centos7离线安装neo4j

一、准备需要的rpm包 本地环境执行如下命令&#xff1a; docker pull couchbase/centos7-systemd docker run -it couchbase/centos7-systemd bash # 可能需要换源 yum update -y vi /etc/yum.conf # 修改其中的keepcache1 rpm --import https://debian.neo4j.com/neotechnol…

Web3j 继承StaticStruct的类所有属性必须为Public <DynamicArray<StaticStruct>>

Web3j 继承StaticStruct的类所有属性必须为Public&#xff0c;属性的顺序和数量必须和solidity 里面的struct 属性相同&#xff0c;否则属性少了或者多了的时候会出现错位 Web3j 继承StaticStruct的类所有属性不能为private&#xff0c;因为web3j 是通过长度去截取返回值解析成…

【HBZ分享】TCP可靠性传输如何保证的?以及传输优化之Nagle算法

ACK机制 ACK机制是发送方与接收方的一个相互确认客户端向服务端发送连接请求&#xff0c;此时服务端要回馈给客户端ACK&#xff0c;以表示服务端接到了客户端请求&#xff0c;这是第一和的第二次握手客户端接收到服务端响应后&#xff0c;同样也要回馈服务端的响应&#xff0c…

使用DOSBOX运行TurboC2,TC2使用graphics库绘图

Turbo C是由美国Borland公司开发的一套C语言程序开发工具&#xff0c;Borland公司是一家专门从事软件开发、研制的大公司。该公司相继推出了一套Turbo系列软件&#xff0c;如Turbo BASIC、Turbo Pascal、Turbo Prolog&#xff0c;这些软件很受用户欢迎 [1] 。 Turbo C集成了程序…

2022年06月 C/C++(七级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:有多少种二叉树 输入n(1<n<13),求n个结点的二叉树有多少种形态 时间限制:1000 内存限制:65536 输入 整数n 输出 答案 样例输入 3 样例输出 5 这个问题可以使用动态规划的方法来解决。我们可以定义一个数组dp,其中dp[i]表…

springboot自定义事件发布及监听

自定义线程池 Configuration public class MyThreadPool {//ThreadPoolTaskExecutor不会自动创建ThreadPoolExecutor&#xff0c;需要手动调initialize才会创建。如果Bean就不需手动&#xff0c;会自动InitializingBean的afterPropertiesSet来调initializeBean("myExecut…

北京APP外包开发需要注意的问题

开发APP的过程中&#xff0c;由于开发APP需要投入大量的时间、精力和资源&#xff0c;所以在开始前一定要做好充足的准备和规划。您需要注意以下重点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1…

加工生产调度

题目描述 某工厂收到了 n 个产品的订单&#xff0c;这 n 个产品分别在 A、B 两个车间加工&#xff0c;并且必须先在 A 车间加工后才可以到 B 车间加工。 某个产品 在 A&#xff0c;B 两车间加工的时间分别为 。怎样安排这 n 个产品的加工顺序&#xff0c;才能使总的加工时间…

三相PMSM的坐标变换

三相PMSM的坐标变换 三相PMSM的数学模型具有复杂性和耦合性的多变量系统。因此需要对其进行降阶和解耦变换。 Vα&#xff0c;Vb&#xff0c;Vc是自然坐标系。 Vα&#xff0c;Vβ是静止坐标系。 Vd&#xff0c;Vq是同步旋转坐标系。 自然坐标系 三相永磁同步电机的驱动电路…

计算机毕设之基于python+django+mysql的影片数据爬取与数据分析(包含源码+文档+部署教程)

影片数据爬取与数据分析分为两个部分&#xff0c;即管理员和用户。该系统是根据用户的实际需求开发的&#xff0c;贴近生活。从管理员处获得的指定账号和密码可用于进入系统和使用相关的系统应用程序。管理员拥有最大的权限&#xff0c;其次是用户。管理员一般负责整个系统的运…

使用maven创建springboot项目

创建maven快速启动项目 命令行或者idea、eclipse快捷创建也可以 pom.xml下project项目下导入springboot 父工程 <!--导入springboot 父工程--> <parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.bo…

Android studio多线程模板

import android.os.Handler;import android.os.HandlerThread;/*说明&#xff1a;普通的runable和handler不是新建一个线程&#xff0c;而是在原有主线程的基础上再开一段执行内容&#xff0c;单个没有问题&#xff0c;但是涉及到多个界面同时runable就会报错所以必须新开线程来…

CSAPP的Lab学习——AttackLab

文章目录 前言一、阶段一攻击二、阶段二攻击三、阶段三攻击四、阶段四攻击五、阶段五攻击总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招。刚刚看完CSAPP&#xff0c;真是一本神书啊&#xff01;遂尝试将它的Lab实现&#xff0c;并记录期间心酸历程。 代码下载 官方…

mysql char 和varchar的区别?

char 和varchar的区别 1、 char 一定会使用指定的空间&#xff0c;varchar是根据数据来定空间 2、 char的插入数据效率理论上比varchar高&#xff1a;varchar是需要通过后面的记录数来计算 使用哪一种类型&#xff1f; 如果确定数据一定是占指定长度&#xff0c;那么使用char类…