当前位置: 首页 > article >正文

【数据结构】顺序表的应用->通讯录(详细代码及配图)

小编主页详情-请点击小编gitee代码仓库-请点击本文主要介绍了数据结构的顺序表的应用-通讯录内容全由作者原创无AI同时深度解析了通讯录顺序表增删查改等功能并带有配图帮助博友们更好的理解点个关注不迷路下面进入正文~~目录1.顺序表需要实现的功能2.通讯录相关方法的具体实现2.1通讯录数据的定义2.2给通讯录改名字2.3通讯录的初始化2.4通讯录的销毁2.5通讯录添加数据2.6通讯录删除数据2.7展示通讯录数据2.8通讯录的修改2.9通讯录查找3.通讯录的具体实现结语1.顺序表需要实现的功能1.能够保存用户的信息姓名 性别 年龄 电话 地址。2.实现初始化、销毁、添加、删除、修改、查找、显示用户信息的功能代码如下图所示//通讯录的初始化 void ContactInit(Contact* con); //通讯录的销毁 void ContactDesTroy(Contact* con); //通讯录添加数据 void ContactAdd(Contact* con); //通讯录删除数据 void ContactDel(Contact* con); //通讯录的修改 void ContactModify(Contact* con); //通讯录查找 void ContactFind(Contact* con); //展示通讯录数据 void ContactShow(Contact* con);2.通讯录相关方法的具体实现2.1通讯录数据的定义我们的通讯录是建立在顺序表的基础上实现的我们先回顾一下顺序表的内容typedef int SLDataType; typedef struct SeqList { SLDataType* arr; int size; int capacity; }SL;可以看到顺序表中我们将int重命名为SLDateType所以存储的是整形类型的元素。但是我们现在要存的是一个用户的具体信息包含姓名、地址等信息因此SLDateType代表的数据不应该是整形类型而是一个包含用户具体信息的结构体我们创建Contact.h头文件用来包含通讯录需要实现的功能并将包含用户具体信息结构体的定义写在这个头文件中同时SeqList.h包含Contact.h头文件#define NAME_MAX 20 #define GENDER_MAX 10 #define TEL_MAX 20 #define ADDR_MAX 100 typedef struct personInfo { char name[NAME_MAX]; char gender[GENDER_MAX]; int age; char tel[TEL_MAX]; char addr[ADDR_MAX]; }peoInfo;为了方便后续代码的实现我们将struct personInfo重命名成peoInfo这个peoInfo就是我们顺序表应该要存的内容所以我们将peoInfo重命名为SLDateType//typedef int SLDataType; typedef peoInfo SLDataType;2.2给通讯录改名字要用到顺序表相关的方法对通讯录的操作实际就是对顺序表进行操作给顺序表改个名字叫做通讯录typedef struct SeqList Contact;需要注意我们不能写成typedef SL Contact;因为在这个Contact.h头文件里我们并没有包含SeqList.h两个头文件不能互相包含否则编译器会报错即使由链接器Contact.h头文件里也无法识别SL2.3通讯录的初始化通讯录的初始化实际上要进行的是顺序表的初始化而顺序表的初始化已经实现好了因此我们可以直接使用顺序表初始化的函数void ContactInit(Contact* con) { //实际上要进行的是顺序表的初始化 //顺序表的初始化已经实现好了 SLInit(con); }2.4通讯录的销毁同样的通讯录的销毁实际上要进行的是顺序表的销毁因此我们可以直接使用顺序表销毁的函数void ContactDesTroy(Contact* con) { SLDestory(con); }2.5通讯录添加数据实现的思路1.获取用户输入的内容姓名性别年龄电话地址2.往通讯录中添加联系人数据我们在顺序表实现了头插和尾插的方法可以任选一个使用这里使用尾插的方法void ContactAdd(Contact* con) { //获取用户输入的内容姓名性别年龄电话地址 peoInfo info; printf(请输入要添加的练习人姓名:\n); scanf(%s, info.name); printf(请输入要添加的练习人性别:\n); scanf(%s, info.gender); printf(请输入要添加的练习人年龄:\n); scanf(%d, info.age); printf(请输入要添加的练习人电话:\n); scanf(%s, info.tel); printf(请输入要添加的练习人地址:\n); scanf(%s, info.addr); //往通讯录中添加联系人数据 SLPushBack(con, info); }注意info.age需要取地址2.6通讯录删除数据在删除数据之前我们先要判断删除的数据是否存在如果数据不存在则删除失败如果存在则删除数据。因此我们先实现一个判断数据是否存在的函数。这个数据包含姓名、性别、地址等信息我们选择一个信息来判断这个数据是否存在这里我们选择通过姓名判断。int FindByName(Contact* con, char name[]) { for (int i 0; i con-size; i) { if (strcmp(con-arr[i].name, name) 0) { //找到了 return i; } } //没有找到 return -1; } //通讯录删除数据在这个函数里我们使用了strcmp函数来判断名字是否相同若相同则等于0当我们找到了对应的姓名则返回对应的下标方便数据的删除如果没找到则返回一个无效值-1删除数据我们同样可以使用顺序表定义的函数SLErase2.7展示通讯录数据1.打印表头姓名 性别 年龄 电话 地址2.遍历通讯录按照格式打印每个联系人数据void ContactShow(Contact* con) { //表头姓名 性别 年龄 电话 地址 printf(%s %s %s %s %s\n, 姓名, 性别, 年龄, 电话, 地址); //遍历通讯录按照格式打印每个联系人数据 for (int i 0; i con-size; i) { printf(%4s %4s %4d %4s %4s\n, con-arr[i].name, con-arr[i].gender, con-arr[i].age, con-arr[i].tel, con-arr[i].addr ); } }这里注意可以使用%4s向后对齐保证数据的对齐具体的对齐数据可以自行调试2.8通讯录的修改同样的修改数据之前也需要判断数据是否存在若存在再进行修改void ContactModify(Contact* con) { char name[NAME_MAX]; printf(请输入要修改的联系人姓名:\n); scanf(%s, name); int find FindByName(con, name); if (find 0) { printf(要修改的联系人姓名不存在!\n); return; } printf(请输入要修改的练习人姓名:\n); scanf(%s, con-arr[find].name); printf(请输入要修改的练习人性别:\n); scanf(%s, con-arr[find].gender); printf(请输入要修改的练习人年龄:\n); scanf(%d, con-arr[find].age); printf(请输入要修改的练习人电话:\n); scanf(%s, con-arr[find].tel); printf(请输入要修改的练习人地址:\n); scanf(%s, con-arr[find].addr); printf(修改成功!\n); }2.9通讯录查找1.打印表头姓名 性别 年龄 电话 地址2.判断数据是否存在若存在再打印数据void ContactFind(Contact* con) { char name[NAME_MAX]; printf(请输入要查找的联系人姓名:\n); scanf(%s, name); int find FindByName(con, name); if (find 0) { printf(要查找的联系人姓名不存在!\n); return; } //表头姓名 性别 年龄 电话 地址 printf(%s %s %s %s %s\n, 姓名, 性别, 年龄, 电话, 地址); //遍历通讯录按照格式打印查找联系人数据 printf(%4s %4s %4d %4s %4s\n, con-arr[find].name, con-arr[find].gender, con-arr[find].age, con-arr[find].tel, con-arr[find].addr ); }3.通讯录的具体实现1.打印目录2.创建通讯录变量con3.初始化通讯录4.通过switch case语句选择要执行的功能5.通过do while 循环执行打印目录和执行通讯录的功能6.销毁通讯录具体代码的呈现void menu() { printf(*****************通讯录****************\n); printf(*****1.增加联系人 2.删除联系人*****\n); printf(*****3.修改联系人 4.查找联系人*****\n); printf(*****5.展示联系人 0.退出通讯录*****\n); printf(***************************************\n); } int main() { int op -1; Contact con; ContactInit(con); do { menu(); printf(请选择您的操作:\n); scanf(%d, op); switch (op) { case 1: ContactAdd(con); break; case 2: ContactDel(con); break; case 3: ContactModify(con); break; case 4: ContactFind(con); break; case 5: ContactShow(con); break; case 0: printf(退出通讯录...\n); break; default: printf(选择错误请重新选择\n); break; } } while (op); ContactDesTroy(con); return 0; }结语这篇文章全文由作者手写图片由画图软件所制无AI制作希望各位博友能有所收获欢迎各位博友的讨论觉得不错的小伙伴别忘了点赞关注哦~

相关文章:

【数据结构】顺序表的应用->通讯录(详细代码及配图)

小编主页详情<-请点击 小编gitee代码仓库<-请点击 本文主要介绍了数据结构的顺序表的应用->通讯录&#xff0c;内容全由作者原创&#xff08;无AI&#xff09;&#xff0c;同时深度解析了通讯录顺序表增删查改等功能&#xff0c;并带有配图帮助博友们更好的理解&#…...

008、系统组装与API服务化:构建完整RAG Pipeline

昨天深夜调试时遇到一个典型问题:用户问“今年Q3财报关键数据”,系统返回的却是三年前的老数据。检查发现,检索模块返回了相关文档,但排序逻辑把发布时间字段误当成相关性分数处理了。这种模块间接口不对齐的问题,在组装RAG系统时太常见了。 管道组装:不只是拼积木 很多…...

007、大语言模型集成:Prompt工程与上下文管理

昨天深夜调试时遇到一个诡异问题:同样的查询,在本地测试时LLM能准确返回产品参数,上了生产环境就总答非所问。盯着监控日志看了半小时才发现,某个微服务在拼接用户历史对话时,漏掉了两条关键消息——上下文窗口看似饱满,实则缺了核心信息。这个坑让我重新审视了RAG系统中…...

华为:渐进解锁细粒度视觉感知

&#x1f4d6;标题&#xff1a;FineViT: Progressively Unlocking Fine-Grained Perception with Dense Recaptions &#x1f310;来源&#xff1a;arXiv, 2603.17326v1 &#x1f31f;摘要 虽然多模态大语言模型&#xff08;MLLM&#xff09;经历了快速的发展&#xff0c;但其视…...

我郑重声明:我的目标是图灵奖,这是理工男的执念!所以在第一时间发现可实现AGI蓝图的时候,就给图灵奖官方邮箱发了论文PDF,这是存档+时间戳。我知道,明确知道,最终的AGI实现必然走我的路子。哈哈哈

总有人拿民科来说事&#xff0c;仔细想咱真也是民科&#xff0c;&#xff0c;&#xff0c;没啥说的&#xff0c;没混上教授的&#xff0c;那个不是民科&#xff1f;&#xff1f;&#xff1f; 不要拿民科怎么样来说事&#xff0c;我开始没说自己咋样&#xff0c;真就只想那个图…...

私域流量运营自动化 1.5 小时上手

OpenClaw 电商实战 第 2 篇 字数&#xff1a;约 10000 字 阅读时间&#xff1a;约 25 分钟 难度&#xff1a;⭐ 入门&#xff08;无需编程&#xff09; 更新时间&#xff1a;2026-04-01 写在前面 这个教程能帮你解决什么&#xff1f; 如果你是&#xff1a; ✅ 电商运营人员✅…...

LangChain与向量库集成:Document Loaders与Text Splitters

上周三凌晨两点&#xff0c;我被一个奇怪的召回问题卡住了&#xff1a;明明在PDF里写得很清楚的配置项&#xff0c;用相似问题去查向量库&#xff0c;总是返回一些边缘内容。打开调试日志一看&#xff0c;发现切出来的文本片段里&#xff0c;前半段是某个章节的结尾&#xff0c…...

CW32L012/F030灵眸X1智能小车--电机调速控制

1.认识PWM PWM&#xff08;Pulse Width Modulation脉宽调制&#xff09;是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用&#xff0c;方波占空比被调制用来对一个具体模拟信号的电平…...

三菱PLC与MCGS组态农田智能灌溉系统:后发送产品梯形图原理图及IO分配与组态画面解析

基于三菱PLC和MCGS组态农田智能灌溉系统 我们主要的后发送的产品有&#xff0c;带解释的梯形图接线图原理图图纸&#xff0c;io分配&#xff0c;组态画面上周刚把农田智能灌溉的项目收尾&#xff0c;把资料打包发给客户的时候&#xff0c;终于能瘫在椅子上喝杯冰可乐了。这个…...

【C++第二十三章】C++11

前言 &#x1f680;C11 常被称为现代 C 的起点。它不是一次零碎的小修小补&#xff0c;而是一次真正改变编程方式的大版本更新&#xff1a;从统一初始化&#xff0c;到 auto / decltype 的类型推导&#xff1b;从右值引用、移动语义&#xff0c;到完美转发&#xff1b;再到 lam…...

Redis 全量主从同步和增量主从同步详解

Redis 主从同步:全量同步与增量同步详解 Redis 主从复制是实现高可用、读写分离和数据冗余的基础。复制过程分为全量同步和增量同步两种模式。理解它们的工作原理、触发条件及配置优化,是系统分析师设计高可用 Redis 架构的关键。 📌 一、主从复制基本概念 主节点(Master…...

从熬夜改稿到一键成稿:Paperxie AI 毕业论文写作,本科生的学术通关神器

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 一、写论文的痛&#xff0c;每个本科生都懂 凌晨三点的宿舍&#xff0c;电脑屏幕亮着刺眼的光&#xff0c;Word 文…...

2026年全场景适配最值得关注的五大能源管理系统

各位读者&#xff0c;大家好&#xff01;在全球能源结构加速转型的当下&#xff0c;能源管理系统的发展至关重要。今天我要为大家介绍2026年全场景适配最值得关注的五大能源管理系统。这些系统对于企业提升能源管理的精细化、智能化水平&#xff0c;增强核心竞争力有着重要意义…...

MongoDB单节点转副本集(Docker安装版本)

为什么需要副本集&#xff1f;场景单节点副本集支持 Oplog❌✅MongoShake 同步❌✅数据备份恢复仅全量全量增量高可用❌✅核心结论&#xff1a;MongoShake 依赖 Oplog 实现实时同步&#xff0c;而 Oplog 只在副本集模式下产生。Docker Compose 配置version: 3.8 services:mongo…...

特定域名的proxy访问

不想破坏现有的proxy规则&#xff1b;某些域名需要proxy才可以上。 使用gost中的ss&#xff0c;简单搭建proxy&#xff1a;gost文档&#xff1a;https://v2.gost.run/ss/1. gost配置 服务端&#xff1a; gost -Lss://aes-128-gcm:password:8361客户端&#xff08;windows&#…...

2026届毕业生推荐的五大AI论文网站实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 倚仗自然语言处理跟学术知识图谱技术的AI开题报告工具&#xff0c;能够快速生成研究背景、文…...

2025最权威的降重复率网站解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 关于DeepSeek模型的学术论文&#xff0c;要着重于它的核心技术架构&#xff0c;这其中涵盖混…...

4 大类别 22 个高效的 Agentic Skills | 适用于 Claude、GPT

增强各类 AI 模型的能力&#xff0c;帮助你在写作、内容生产、研究分析、视觉表达、自动化执行等方面提升效率。 这些技能以 .md 格式编写&#xff0c;虽然这是 Claude 常用的技能格式&#xff0c;但你同样可以将内容复制到 ChatGPT 中使用。 Claude 如何创建 skill 国内用户…...

一篇吃透RNN(循环神经网络),LSTM(长短期记忆网络),BiLSTM(双向长短期记忆网络)算法,计算机小白也能轻松看懂

NLP-AHU-125&#xff08;神秘暗号&#xff09;哈喽各位CSDN的小伙伴们&#xff0c;我是一名专注AI入门干货的大学生博主&#xff5e; 相信刚接触深度学习序列模型的同学&#xff0c;都被RNN、LSTM、BiLSTM这三个“孪生兄弟”绕晕过&#xff1a;明明都是处理序列数据&#xff0c…...

Golutra:超越 IDE , 一个人,一个 AI 军团!使用赛博监工系统,指挥你的 AI 牛马

⚡ 你有没有想过&#xff0c;如何能像管理微信群一样管理你的 AI 团队&#xff0c;让多 Agent 协同工作不再是幻想&#xff01; | 以下观点都是个人使用&#xff0c;以及测评观点。 AI 工具革命的下一个阶段 如何能通过多路协同的方式调用不同的 AI 工具&#xff0c;然后又让…...

全域数学理论宇宙本源正式宣言(乖乖数学)

全域数学理论宇宙本源正式宣言 宣告日期&#xff1a;公元二〇二六年四月二日 宣告事由&#xff1a;庄严确立全域数学理论之宇宙本源核心定论&#xff0c;昭示宇宙根本运行法则&#xff0c;正式向世间宣告本理论之终极核心要义 序言 宇宙之本体、时空之本质、物质之根源&#xf…...

WarcraftHelper:魔兽争霸III终极优化指南 - 解决宽屏、帧率、地图限制三大痛点

WarcraftHelper&#xff1a;魔兽争霸III终极优化指南 - 解决宽屏、帧率、地图限制三大痛点 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在…...

【教程4>第12章>第8节】基于FPGA的图像缩放实现——图像横向压缩仿真测试以及MATLAB辅助验证

本课程学习成果预览 目录 1.软件版本 2.图像横向压缩testbench编写 3.仿真测试 4.程序操作视频 欢迎订阅FPGA/MATLAB/Simulink系列教程 《★教程1:matlab入门100例》 《★教程2:fpga入门100例》 《★教程3:simulink入门60例》 《★教程4:FPGA/MATLAB/Simulink联合开发入门与…...

遗传算法VRP问题:VRP,多车容量约束 针对物流问题,根据实际情况,设置多车多容量,采用遗传...

遗传算法VRP问题&#xff1a;VRP&#xff0c;多车容量约束 针对物流问题&#xff0c;根据实际情况&#xff0c;设置多车多容量&#xff0c;采用遗传算法分析求解&#xff0c;在matlab实现并画图&#xff0c;展示求解结果前阵子帮做物流的表哥捋了捋他们的配送问题&#xff0c;本…...

根据所给文字范围,为您提供的总结标题为:“使用栅格法结合蚁群算法规划机器人全局路径

使用栅格法通过蚁群算法规划机器人全局路径上周帮实验室的学弟调他的机器人路径规划代码&#xff0c;他对着满屏的栅格地图挠头&#xff1a;明明地图里堵了个外卖柜&#xff0c;为啥机器人非要往那撞&#xff1f;后来聊到用蚁群算法做全局规划&#xff0c;才发现不少人把栅格法…...

Claude Code 之父:AI 的改变不止于代码,程序员需要改变整个工作流

高水平工程劳动&#xff0c;正在离开手写代码。编译 | 王启隆出品丨AI 科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;这两天&#xff0c;Claude Code 以一种多少有点尴尬的方式被更多人看见了。不是因为新模型发布&#xff0c;也不是因为哪场演示太惊艳&#xff…...

基于单片机的井盖监测系统

摘 要 当前我国设计的井盖监测主要通过在井盖上放置标识等放置被盗&#xff0c;然后监测到被盗后&#xff0c;通过摄像头对其进行跟踪&#xff0c;导致当前还是存在很多井盖被盗&#xff0c;因此此次设计一款主要针对井盖防盗系统&#xff0c;监测到井盖移动时发送信息到管理人…...

Java协议解析慢得离谱?5个被90%团队忽略的字节级优化陷阱,今天必须修复!

第一章&#xff1a;Java协议解析慢得离谱&#xff1f;5个被90%团队忽略的字节级优化陷阱&#xff0c;今天必须修复&#xff01;Java应用在高频网络通信场景&#xff08;如金融行情推送、IoT设备接入&#xff09;中&#xff0c;常因协议解析层性能瓶颈导致端到端延迟飙升——问题…...

【预测模型】基于VMD-SE-GRU+Transformer多变量时序预测 Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f447; 关注我领取海量matlab电子书和数学建模资料&#x1f34a;个人信条&#xff1a;格物致知,完整Matl…...

Android compose 可见性动画未执行问题修复

接着修改待办事项demo&#xff0c; 动画有问题&#xff0c; 导致初始不显示数据&#xff0c;其实数据库是有数据的。原代码如下&#xff1a;package com.example.testcompose1import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.Fa…...