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

通讯录Linux的实现

产品底层思考:

  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.lqws.cn/news/86095.html

相关文章:

  • 06.MySQL数据库操作详解
  • 云服务器无法远程连接怎么办?
  • MySQL中的字符串分割函数
  • 基于大模型的急性乳腺炎全病程风险预测与综合治疗方案研究
  • 深度剖析:AI 建站的现状、局限与未来展望-AI编程建站实战系列预告优雅草卓伊凡
  • 电脑桌面便签软件哪个好?桌面好用便签备忘录推荐
  • 【C++/Linux】TinyWebServer前置知识之IP协议详解
  • linux 的devmem2 调式使用说明
  • PAT-甲级JAVA题解(更新中...)
  • 【C语言入门级教学】冒泡排序和指针数组
  • 散列表(哈希表)
  • Linux内核体系结构简析
  • 向量空间的练习题目
  • 2024年数维杯国际大学生数学建模挑战赛D题城市弹性与可持续发展能力评价解题全过程论文及程序
  • 高等数学笔记 第八章——向量代数与空间解析几何2
  • FDR的定位原理
  • 使用ArcPy批量处理矢量数据
  • 《软件项目管理》第一章(概述)期末周复习总结笔记
  • AI书签管理工具开发全记录(九):用户端页面集成与展示
  • 智慧政务标准规范介绍:构建高效、协同的政务信息体系
  • 【nm】nm命令的使用:查看.so中的符号信息
  • 构建高性能风控指标系统
  • YARN应用日志查看
  • ubuntu安装devkitPro
  • DAX权威指南6:DAX 高级概念(扩展表)、DAX 计算常见优化
  • 7.文本内容处理sort,uniq,out,cat,comm,diff
  • 前端面经高阶组件HOC 和 HOOKS Redux
  • 小白的进阶之路系列之十----人工智能从初步到精通pytorch综合运用的讲解第三部分
  • cnn训练并用grad-cam可视化
  • 云服务器突发宕机或无响应怎么办