数据结构_基于链表的通讯录
顺序表的源代码需要略作修改,如下 将数据类型改为通讯录的结构体。注释掉打印,查找的函数。
SList.h
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include"Contact.h"typedef PeoInfo SList_Datatype;typedef struct SList_Node
{SList_Datatype Data;struct SList_Node* Next;
}STL_Node;//void SLTPrint(STL_Node* phead);//尾插
void SLTPushBack(STL_Node** pphead, SList_Datatype x);
//头插
void SLTPushFront(STL_Node** pphead, SList_Datatype x);
//尾删
void SLTPopBack(STL_Node** pphead);
//头删
void SLTPopFront(STL_Node** pphead);//查找
//STL_Node* SLTFind(STL_Node* phead, SList_Datatype x);//在指定位置之前插入数据
void SLTInsert(STL_Node** pphead, STL_Node* pos, SList_Datatype x);
//在指定位置之后插入数据
void SLTInsertAfter(STL_Node* pos, SList_Datatype x);//删除pos节点
void SLTErase(STL_Node** pphead, STL_Node* pos);
//删除pos之后的节点
void SLTEraseAfter(STL_Node* pos);//销毁链表
void SListDesTroy(STL_Node** pphead);
Contact.h
新建立一个结构体,存储联系人的数据。将链表重新给一个名字contact。
实现以下几个接口:
#pragma once#define NAME_MAX 20
//前置声明
typedef struct SList_Node contact;
//用户数据
typedef struct PersonInfo
{char name[NAME_MAX];char tel[11];
}PeoInfo;//初始化通讯录
void InitContact(contact** con);
//添加通讯录数据
void AddContact(contact** con);
//删除通讯录数据
void DelContact(contact** con);
//展示通讯录数据
void ShowContact(contact* con);
//查找通讯录数据
contact* FindContact(contact* con, char* find);
//修改通讯录数据
void ModifyContact(contact** con);
//销毁通讯录数据
void DestroyContact(contact** con);
Contact.c
因为我写过一遍通讯录(基于顺序表)所以再基于链表写一个的难度不是很大。
这里我要特别提醒自己和在看的各位:if(xxx == xxx) 中间一定记得用双等号,不要手滑搞成了 ‘=’(因为本人因为这个错误找了半小时bug,知道是这个原因的时候直接碎掉)
#define _CRT_SECURE_NO_WARNINGS 1
#include"Contact.h"
#include"SList.h"
#include<stdio.h>
#include<string.h>
//初始化通讯录
void InitContact(contact** con)
{contact* phead = NULL;*con = phead;
}
//添加通讯录数据
void AddContact(contact** con)
{PeoInfo newperson;printf("姓名:");scanf("%s", newperson.name);printf("电话:");scanf("%s",newperson.tel);SLTPushBack(con,newperson);
}
//删除通讯录数据
void DelContact(contact** con)
{char del[NAME_MAX];printf("要删除的联系人的姓名:");scanf("%s",del);contact* find = FindContact(*con, del);if (find == NULL){printf("要删除的联系人不存在");return;}SLTErase(con, find);
}
//展示通讯录数据
void ShowContact(contact* con)
{assert(con);while (con){printf("姓名:%s\n", con->Data.name);printf("电话:%s\n", con->Data.tel);con = con->Next;}
}
//查找通讯录数据
contact* FindContact(contact* con,char* find)
{contact* pcur = con;while (pcur){if (strcmp(find, pcur->Data.name) == 0){return pcur;}pcur = pcur->Next;}return NULL;
}
//修改通讯录数据
void ModifyContact(contact** con)
{printf("请输入要修改联系人的名字:");char mod[NAME_MAX];scanf("%s",mod);contact* find = FindContact(*con, mod);if (find == NULL){printf("要修改的联系人不存在!");return;}PeoInfo newperson;printf("请输入修改后的名字、电话:");scanf("%s%s",newperson.name,newperson.tel);SLTInsertAfter(find,newperson);SLTErase(con,find);
}
//销毁通讯录数据
void DestroyContact(contact** con)
{SListDesTroy(con);
}
本博客旨在记录学习过程,以后忘了随时来看。
相关文章:
数据结构_基于链表的通讯录
顺序表的源代码需要略作修改,如下 将数据类型改为通讯录的结构体。注释掉打印,查找的函数。 SList.h #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> #include<stdlib.h> #include<assert.h> #include"Contact.h"ty…...
jenkins+gitlab配置
汉化 1、安装Localization: Chinese (Simplified)插件 (此处我已安装) (安装完成后重启jenkins服务即可实现汉化) 新增用户权限配置 1、安装插件 Role-based Authorization Strategy 2、全局安全配置 3、配置角色权限 4、新建…...
【Labview】虚拟仪器技术
一、背景知识 1.1 虚拟仪器的定义、组成和应用 虚拟仪器的特点 虚拟仪器的突出特征为“硬件功能软件化”,虚拟仪器是在计算机上显示仪器面板,将硬件电路完成信号调理和处理功能由计算机程序完成。 虚拟仪器的组成 硬件软件 硬件是基础,负责将…...
IvorySQL 3.2原理解析|与Oracle 12c XML函数兼容性的实现机制
[发行日期:2024年4月11日] IvorySQL 3.2基于PostgreSQL 16.2,引入了多种Oracle XML函数的全面兼容性功能,同时修复了多个问题,更多信息请参考文档网站。 >>>新版本体验链接: https://docs.ivorysql.org/cn…...
SpringBoot + Dobbo + nacos
SpringBoot Dobbo nacos 一、nacos https://nacos.io/zh-cn/docs/quick-start.html 1、下载安装包 https://github.com/alibaba/nacos/releases/下载后在主目录下,创建一个logs的文件夹:用来存日志 2、启动nacos 在bin目录下打开cmd运行启动命令&a…...
学习笔记-微服务基础(黑马程序员)
框架 spring cloudspring cloud alibaba Eureka eureka-server 注册中心 eureka-client 客户端每30s发送心跳服务 服务消费者服务提供者 server 依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-star…...
每日Bug汇总--Day05
Bug汇总—Day05 一、项目运行报错 二、项目运行Bug 1、**问题描述:**前端将从后台查询的数据作为参数进行get请求,参数为空 原因分析: 这种写法可能只支全局的参数调用方法的传参响应 代码实现 if (this.jishiName) {this.$http({url…...
docker、ctr、crictl命令对比
命令dockerctr(containerd)crictl(kubernetes)查看运行的容器docker psctr task ls/ctr container lscrictl ps查看镜像docker imagesctr image lscrictl images查看容器日志docker logs无crictl logs查看容器数据信息docker insp…...
uniapp 编译后分包下静态图片404问题解决方案
如上图官方说明: 在分包下建立一个static文件夹即可: 分包内代码引用图片 <image src"/分包名称/img/图片名称"></image> <image src"/dataView/img/图片名称"></image>...
第十二届蓝桥杯大赛软件赛省赛Java 大学 B 组题解
1、ASC public class Main {public static void main(String[] args) {System.out.println(...
关于openai和chatgpt、gpt-4、PyTorch、TensorFlow 两者和Transformers的关系
近两年,随着人工智能的火爆,不论通过哪个渠道,相信我们都听说过openai、gpt等这类名词,那么它们到底是什么意思,请看下文。 openai:是一家人工智能公司; openai-api:是openai提供的api…...
C 共用体
共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。 定义共用体 为了定义共用体,您必须使用 u…...
智能合约:未来数字经济的基石
智能合约是一种自动执行交易的计算机协议,它以代码形式规定了交易双方的权利和义务,具有高度的可靠性和安全性。随着数字经济的发展,智能合约的重要性日益凸显,将成为未来数字经济的基石。 首先,智能合约在金融领域的应…...
第十一届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
第十一届蓝桥杯大赛软件赛省赛C/C 大学 B 组 文章目录 第十一届蓝桥杯大赛软件赛省赛C/C 大学 B 组1、字串排序2、门牌制作3、既约分数4、蛇形填数5、跑步锻炼6、七段码7、成绩统计8、回文日期9、子串分值和10、平面切分 1、字串排序 // 转载博客链接 https://blog.csdn.net/we…...
Lua语法(三)——元表与元方法
参考链接: 系列链接: Lua语法(一) 系列链接: Lua语法(二)——闭包/日期和时间 系列链接: Lua语法(三)——元表与元方法 系列链接: Lua语法(四)——协程 系列链接: Lua语法(五)——垃圾回收 系列链接: Lua语法(六)——面相对象编程 元表与元方法目录 简介正文元表元方法表相关常…...
Lua语法(五)——垃圾回收
参考链接: 系列链接: Lua语法(一) 系列链接: Lua语法(二)——闭包/日期和时间 系列链接: Lua语法(三)——元表与元方法 系列链接: Lua语法(四)——协程 系列链接: Lua语法(五)——垃圾回收 系列链接: Lua语法(六)——面相对象编程 Lua语法 五——垃圾回收 垃圾回收弱引用表__m…...
已解决java.net.NoRouteToHostException: 无法到达主机异常的正确解决方法,亲测有效!!!
已解决java.net.NoRouteToHostException: 无法到达主机异常的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 检查网络连接 核实目标地址 检查防火墙和路由器规则 验证VPN/代理设置 修正网络配置 …...
代码随想录算法训练营第三十八天| 509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯
题目与题解 参考资料:动态规划基础 动态规划五步曲 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 509. 斐波那契数 题目链接:509. 斐波那契数 代码随想录题解&am…...
视频中会动的进度条
视频中会动的进度条 1.成果展示:2.步骤: 1.成果展示: 2.步骤:...
C++高级特性:柯里化过程与std::bind(六)
1、柯里化过程 1.1、operator()的引入 现在需要完成这样一个需求:有一个函数每次调用返回的结果不一样。例如:两次调用的返回值都不一样那么就可以达到这种目的 1.1.1、简单点的写法 可以给一个全局的变量(静态变量)ÿ…...
vmware虚拟机补救
更新了虚拟机里面工具和资料,进行了磁盘整理和压缩,虚拟机运行进不去系统了。 网站找的修复方法均不可行。补救措施:利用DiskGenius.exe(要用高版本不然复制的时候就知道了) DG1342.rar - 蓝奏云 加载虚拟硬盘 2008x…...
数据结构(算法)
总结,建议看EXCEL的《算法》页签,不然感觉有点乱 备注原理/步骤时间复杂度空间复杂度串的应用模式匹配简单/暴力O(mn) KMP O(mn) 树的应用树哈夫曼树1、带权路径长度WPL 2、外部排序-最佳归并树1、哈夫曼树的度,只有0和m(m叉…...
SpringCloud集成SkyWalking链路追踪并收集日志2
博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…...
纯小白蓝桥杯备赛笔记--DAY4(数学数据结构图论)
文章目录 数学质因数分解辗转相除法求最大公约数最小公倍数:快速幂乘法逆元费马小定理 逆元乘法逆元素数判定与埃式筛法朴素素数判定法埃式筛法 图论并查集T3:真题--合根植物DijkstraFloyd 基础算法递归,循环,前缀和,差分STL 数学…...
python 最简单的网页爬虫
import requests url"https://news.ifeng.com/c/8OZc7eV01sM" rrequests.get(url) print(r.status_code) print(r.iter_lines()) # 获取响应的内容 content r.text# 打印网页内容 print(content) # responser.json() # print(response) 爬虫知识讲解: …...
二叉树-数据结构
二叉树-数据结构 二叉树是属性结构的一个重要类型。 如下图二叉树形状 二叉树特征如下: 1.二叉树由 n(n > 0) 个节点组成 2.如果 n 为 0,则为空树 3.如果 n 1,则只有一个节点称为根节点(root) 4.每个节点最多有两个节点,节…...
ansible使用shell模块的环境变量问题
在本机写了一个shell脚本,关于操作mysql的,在本机执行脚本可以正常操作数据库,脚本运行正常。 但是使用ansible ansible -i ./hosts test_teledb -m copy -a "src/etc/ansible/scripts/check.sh dest/tmp"ansible -i ./hosts test…...
ChatGPT论文写作指南:写出引人注目的论文
ChatGPT无限次数:点击直达 ChatGPT论文写作指南:写出引人注目的论文 作为一名有着10年经验的专业CSDN网站原创文章优质创作者,在当今的信息爆炸时代,论文写作的重要性愈发显现。如何能够写出引人注目的论文,吸引读者的眼球并获得…...
ARM64架构栈帧回溯
文章目录 前言一、栈帧简介二、demo演示 前言 请参考:ARM64架构栈帧以及帧指针FP 一、栈帧简介 假设下列函数调用: funb() {func() }funa() {funb() }main() {funa() }main函数,funa函数,funb函数都不是叶子函数,其…...
LangChain:大型语言模型(LLMs)-- 基础知识
1、LangChain的调用大型语言模型模块的介绍 LangChain是一个强大的框架,旨在通过调用大型语言模型(LLM)来开发各种语言驱动的应用程序。在LangChain中,LLM不仅仅是一个简单的模型调用,而是一个复杂链条中的关键部分。…...
昆明网站排名优化公司/廊坊seo关键词优化
6.引用 1.什么是引用? 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 **类型& 引用变量名(对象名) 引用实体;**void TestRef(…...
网站开发美工绩效考核/seo公司推广宣传
基于光流法相位提取算法原理的参考文献为:点击打开链接%% *******************************************%% **********************************************clear;close all;clc;N 512;xmax 1;ymax 1;delta [0,pi/3];x linspace(-xmax,xmax,N);y linspace(-y…...
大连网站制作.net/全面落实疫情防控优化措施
想要在uniapp中使用echarts,需要进行以下操作步骤: 一:操作步骤 1.定义存放图表的div; 2.引入echarts.min,js,可以去echarts的官网“在线定制”; 3.在需要使用echarts的图表vue页面引入echarts.min.js; 4.开始使用echarts绘制图表,…...
网站建设预算表样本/外贸推广是做什么的
iredmail配置好后,尝试从一客户端的OE中发送邮件,结果报错,在mail主机中查看tail /var/log/maillog,发现如下错误信息:Oct 24 12:50:49 mail2 postfix/smtpd[9280]: connect from unknown[192.168.5.240] Oct 24 12:50…...
网站开发需要多少钱推荐/球队世界排名榜
var zTree1;var setting;//树配置setting {async:true,nameCol:"name",asyncUrl:getAsyncUrl, //获取节点数据的URL地址showIcon:false, //是否显示图标asyncParam:["name", "id"], //获取节点数据时的数据名称callback:{beforeAsync:beforeAsy…...
wordpress怎么没有导航栏/网络推广专员是干什么的
Android实现新浪微博那种样式的底部标签,效果真滴灰常不错,不用不知道,一用吓一跳,放心,是惊喜,不是惊吓。代码示例:package com.good;import android.app.TabActivity;import android.content.…...