通讯录Linux的实现

article/2025/6/23 14:17:09

产品底层思考:

  1. 人员如何存储 -> 链表 (增删改 但是排序不适合)
  2. 文件存储 -> 人员数据的格式 name:xxx,phone:xxx
  3. 人员信息 -> 姓名、电话 引出2
    name:xxx,phone:xxx,age:xxx,addr,xxx
    name:yyy,phone:yyy,age:yyy,addr,yyy

在这里插入图片描述

实现通讯录

person结构体
通讯录 含 person结构体 person数量

宏定义

更占用空间但是更快 使用寄存器
失败情况:

#define EXCH(x,y){int tem = x;x = y;y = tem;
}

因为缺少续行符

** 续行符**

#define EXCH(x,y){\int tem = x;\x = y;\y = tem;\
}

续完行后宏定义可以使用
但是由于中间出现分号 有分号导致 if else无法链接
所以为了摆脱分号分开影响 使用do while(0);即可 do while(0);需要加一个分号!
do while(0)

#define EXCH(x,y) do{\  //续航符int tem = x;\x = y;\y = tem;\
}while(0)
#include<stdio.h>
#define EXCH(x,y) do{\int tem = x;\x = y;\y = tem;\
}while(0)int main()
{int x = 10,y = 20;if(x<y)EXCH(x,y);elseprintf("x大于等于y\n");return 0;
}

person结构体

//结构体人包含联系人信息
struct person{
char name[NAME_LENGTH];
char phone[PHONE_LENGTH];

struct person* next;
struct person* prev;

};

通讯录结构体

//通讯录结构
struct contacts{
struct person* people;
int count;
};

宏实现链表的增删

insert

在这里插入图片描述

#define LIST_INSERT(item,list) do{\item->next = list;\item->prev = NULL;\list->next->prev = item;\list = item;\
}while(0)

在这里插入图片描述

move item

除了直接删除需注意头节点的删除需要设置list指针

#define LIST_REMOVE(item,list) do{\if(item->prev != NULL) item->prev->next = item->next;\if(item->next != NULL) item->next->prev = item->prev;\if(list == item) list = item->next;\item->prev = NULL;\item->next = NULL;\
}

在这里插入图片描述


http://www.hkcw.cn/article/SWCnTSbSfa.shtml

相关文章

Python:操作 Excel 格式化

🔧Python 操作 Excel 格式化完整指南(openpyxl 与 xlsxwriter 双方案) 在数据处理和报表自动化中,Python 是一把利器,尤其是配合 Excel 文件的读写与格式化处理。本篇将详细介绍两大主流库: openpyxl:适合读取与修改现有 Excel 文件xlsxwriter:适合创建新文件并进行复…

阿里云服务器ECS详解:云服务器是什么,云服务器优势和应用场景及参考

云服务器ECS是阿里云众多云产品中&#xff0c;最受用户关注的产品&#xff0c;阿里云服务器提供多样化的计算能力&#xff0c;支持x86、Arm架构&#xff0c;涵盖CPU、GPU等多种服务器类型&#xff0c;满足各种用户需求。其便捷易用特性包括分钟级交付、通用API和性能监控框架&a…

【笔记】Windows 下载并安装 ChromeDriver

以下是 在 Windows 上下载并安装 ChromeDriver 的笔记&#xff1a; ✅ Windows 下载并安装 ChromeDriver 1️⃣ 确认 Chrome 浏览器版本 打开 Chrome 浏览器 点击右上角 ︙ → 帮助 → 关于 Google Chrome 记下版本号&#xff0c;例如&#xff1a;114.0.5735.199 2️⃣ 下载…

ABP-Book Store Application中文讲解 - Part 4: Integration Tests - TBD

ABP-Book Store Application中文讲解 - Part 4: Integration Tests 本章用于介绍如何做集成测试。 1. 汇总 ABP-Book Store Application中文讲解-汇总-CSDN博客 2. 前一章 ABP-Book Store Application中文讲解 - Part 3: Creating, Updating and Deleting Books 项目之间…

房屋租赁系统 Java+Vue.js+SpringBoot,包括房屋类型、房屋信息、预约看房、合同信息、房屋报修、房屋评价、房主管理模块

房屋租赁系统 JavaVue.jsSpringBoot&#xff0c;包括房屋类型、房屋信息、预约看房、合同信息、房屋报修、房屋评价、房主管理模块 百度云盘链接&#xff1a;https://pan.baidu.com/s/1KmwOFzN9qogyaLQei3b6qw 密码&#xff1a;l2yn 摘 要 社会的发展和科学技术的进步&#xf…

用wireshark抓包分析学习USB协议

用 wireshark 抓包分析学习 USB 协议 1 框架 上图是使用USB协议通信的两个设备的实现细节。看起来比较复杂&#xff0c;可以看下面的示意图&#xff1a; 整个框架分为三层&#xff1a;Function Layer、USB Device Layer 和 USB Bus Interface Layer&#xff1b;黑色双向箭头代…

PyTorch——卷积操作(2)

二维矩阵 [[ ]] 这里面conv2d(N,C,H,W)里面的四个是 N就是batch size也就是输入图片的数量&#xff0c;C就是通道数这只是一个二维张量所以通道为1&#xff0c;H就是高&#xff0c;W就是宽&#xff0c;所以是1 1 5 5 卷积核 reshape 第一个参数是batch size样本数量 第二个参数…

加拿大没邀请,莫迪不去G7 双边关系紧张所致

据知情人士透露,由于新德里与渥太华关系冷淡,印度总理莫迪或将缺席6月中旬在加拿大举行的七国集团(G7)峰会。这可能将是莫迪六年来首次缺席该峰会。消息人士表示,对于加拿大将于6月15日至17日主办的G7峰会,印方迄今未收到加方正式邀请,且印方也没有表明参加意愿。在进行…

6岁女童被男子拖进小巷 警方通报 嫌疑人已被拘留

6月3日,湖南娄底市公安局娄星分局通报了一起事件。5月20日下午,嫌疑人刘某某(男,38岁)酒后行至娄底市娄星区涟滨中街附近,拖拽一名6岁女童进入居民区巷子。幸好被居民及时制止并报警。接警后,民警迅速赶到现场将刘某某控制。经侦查,刘某某涉嫌寻衅滋事已被拘留,并将依…

央视披露“镇国神器”东风-5参数,网友:40多年前这水平

央视披露“镇国神器”东风-5参数。6月2号,央视新闻报道了一条让人非常振奋而又非常炸裂的消息。那就是直接公布的我们在40多前就已经研发和发射成功的东风-5洲际导弹的具体参数,消息一出,引发全网强烈关注和热烈。我们知道我们很厉害,但是不知道在40多年前我们的镇国利器,…

警方通报“男子拖拽女童”:追究刑责!

警方通报“男子拖拽女童”:追究刑责事件持续发酵。6月3日,湖南娄底市公安局娄星分局通报,5月20日下午,嫌疑人刘某某(男,38岁)酒后行至娄底市娄星区涟滨中街附近,拖拽一女童(6岁)进入居民区巷子,后被居民及时制止并报警。接警后,民警迅速赶到现场将刘某某控制。经侦…

黄金大涨“带火”铂金:有人百万资金囤购 铂金市场热度飙升

黄金大涨“带火”铂金:有人百万资金囤购 铂金市场热度飙升!铂金市场近期出现显著上涨行情,年内累计最大涨幅达到25%。这一波“复兴”浪潮迅速从深圳水贝这一珠宝中心蔓延开来,引发了投资者和买家的广泛关注。陈女士是一位热衷于投资的投资者,她最近在铂金上进行了大量投资…

【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解

【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解 一、前言&#xff1a;移动开发声明式 UI 框架的技术变革 在移动操作系统的发展历程中&#xff0c;UI 开发模式经历了从命令式到声明式的重大变革。 根据华为开发者联盟 2024 年数据报告显示&#xff0c;HarmonyOS 设备…

蒋雨融回应在哈佛毕业典礼上的演讲 堂堂正正争取话语权

蒋雨融回应在哈佛毕业典礼上的演讲 堂堂正正争取话语权!6月2日晚,蒋雨融Luanna在微博上回应了关于哈佛演讲的争议。她表示,无论是争取成为哈佛毕业致辞代表,还是在各个平台上开设账号,都是为了争夺公共话语空间。她认为,如果中国学生不去争取这个空间,就会被其他学生占据…

Linux服务器安装GUI界面工具

注意&#xff1a; 本文内容于 2025-05-31 18:55:23 创建&#xff0c;可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容&#xff0c;请访问原文地址&#xff1a;Linux服务器安装GUI界面工具。感谢您的关注与支持&#xff01; 本文记录在Linux使用Docker安装G…

什么是绿电直连

定义 绿电直连是指风电、太阳能发电、生物质发电等新能源不直接接入公共电网&#xff0c;而是通过专用直连线路向单一电力用户直接供应绿色电力&#xff0c;实现电力的物理溯源。 “物理直连” 是指可再生能源发电项目的发电端与用户通过专门铺设的输电线路直接相连&#xff…

Spring Boot中保存前端上传的图片

在Spring Boot中保存前端上传的图片可以通过以下步骤实现&#xff1a; 1. 添加依赖 确保在pom.xml中已包含Spring Web依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifact…

并查集(上)

1 并查集所包含的方法 int find(a); bool issameset(a,b); void union(a,b); 方法一&#xff1a;int find(a);这个表示是否可以找到这里集合的代表元素 方法二&#xff1a; bool issameset(a,b);这个是表示两个元素是否在一个集合 方法三&#xff1a;void union(a,b);这个表示…

「完整」AI文档库 | 5月20最新发布,221页,《北京大学AI+Agent与Agentic+AI的原理和应用洞察与未来展望》

昨天大师兄给大家介绍了复旦大学的一篇关于AI的讲座。 「完整」AI文档库 | 终于等到你&#xff0c;《复旦大学&#xff1a;大语言模型能力来源与边界》 今天大师兄给大家带来一篇《北京大学DeepSeek系列11&#xff1a;AIAgent与AgenticAI的原理和应用洞察与未来展望》。这篇A…

《棒球万事通》棒球特长生升学方向·棒球1号位

棒球升学双轨制发展路径解析/Bilingual Baseball Career Pathway Analysis 1. 美国大学体育奖学金体系/US Collegiate Scholarship System 核心数据: NCAA D1院校平均每年提供11.7个棒球奖学金 顶级投手球速标准: 高中毕业前需达87-95mph(约140-153km/h) 学术基准: NCAA要…