C语言 实现 链 显示 效果 查找 修改 删除

显示所有信息
2023年10月1日的描述:今天放假
2023年10月2日的描述:今天有体育
2023年10月3日的描述:今天有数学
2023年10月4日的描述:今天有语文
2023年10月5日的描述:今天有政治
2023年10月6日的描述:今天交学费
2023年10月7日的描述:今天周末
2023年10月8日的描述:今天给家里打电话
2023年10月9日的描述:今天给同学辅导数学
2023年10月10日的描述:今天上体育


查找 2023,10,4号的信息
2023年10月4日的描述:今天有语文


更改2023年10月4的信息
[更改]请输入2023年10月4日的描述:中华人民共和国
修改后的节点信息是:
2023年10月4日的描述:中华人民共和国


删除2023年10月5号的记录
2023年10月5日的描述:今天有政治
以上节点信息从链上被剔除~!


显示所有信息
2023年10月1日的描述:今天放假
2023年10月2日的描述:今天有体育
2023年10月3日的描述:今天有数学
2023年10月4日的描述:中华人民共和国
2023年10月6日的描述:今天交学费
2023年10月7日的描述:今天周末
2023年10月8日的描述:今天给家里打电话
2023年10月9日的描述:今天给同学辅导数学
2023年10月10日的描述:今天上体育
所有节点释放完毕~!

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include<string.h>typedef struct Date {int year, month, day;
}Date_t;typedef struct Node {Date_t date;//日期char describe[200];//描述struct Node* next;
}Node_t,*ListLink;void init(ListLink* L) {*L = malloc(sizeof(Node_t));    if (!L) //如果分配失败exit(1);(*L)->next = NULL;
}void push_back(ListLink* L,Node_t node) {static ListLink tail;if ((*L)->next == NULL) {tail = *L;}Node_t* newNode = malloc(sizeof(Node_t));if (!newNode) //如果分配失败exit(1);newNode->date = node.date;strcpy(newNode->describe, node.describe);newNode->next = NULL;tail->next = newNode;tail = newNode;
}Node_t creatNode(int year,int month,int day,char * describe) {    Node_t node;node.date.year = year;node.date.month = month;node.date.day = day;node.next = NULL;strcpy(node.describe, describe);return node;
}int cmp(Date_t a, Date_t b) { //分析两个日期是否一直,一直返回1if (a.year != b.year)return 0;if (a.month != b.month)return 0;if (a.day != b.day)return 0;return 1;
}Node_t* findByDate(ListLink L,Date_t date) {//根据年月日查找节点是否存在ListLink p = L->next;while (p) {if (cmp(p->date, date))//如果找到了对应日期,返回return p;p = p->next;}return p;//没找到返回的必是空
}void showNode(Node_t* node) {//显示一个节点的信息    printf("%d年%d月%d日的描述:", node->date.year, node->date.month, node->date.day);puts(node->describe);
}void edit(Node_t*node) {printf("[更改]请输入%d年%d月%d日的描述:",node->date.year, node->date.month, node->date.day);gets(node->describe);puts("修改后的节点信息是:");showNode(node);
}void delete(ListLink *L,Date_t date) {//找到指定节点的前一个节点ListLink previous = (*L);ListLink current = (*L)->next;while (current) {if (cmp(current->date, date))//如果找到了对应日期,返回break;previous = current;current = current->next;}if (current) {previous->next = current->next;showNode((Node_t*)current);puts("以上节点信息从链上被剔除~!");free(current);}else {puts("删除失败,没有此日期的节点");}     
}void printAll(ListLink L) {    ListLink current = L->next;while (current) {showNode(current);current = current->next;}
}void destruction(ListLink* L) {//销毁整个链Node_t* current;if (*L == NULL)return;current = (*L)->next;while (current) {     (*L)->next = current->next;free(current);current = (*L)->next;      }free(*L);puts("所有节点释放完毕~!");
}int main()
{ListLink L;Node_t* node;Date_t date;init(&L);push_back(&L, creatNode(2023, 10, 1, "今天放假"));push_back(&L, creatNode(2023, 10, 2, "今天有体育"));push_back(&L, creatNode(2023, 10, 3, "今天有数学"));push_back(&L, creatNode(2023, 10, 4, "今天有语文"));push_back(&L, creatNode(2023, 10, 5, "今天有政治"));push_back(&L, creatNode(2023, 10, 6, "今天交学费"));push_back(&L, creatNode(2023, 10, 7, "今天周末"));push_back(&L, creatNode(2023, 10, 8, "今天给家里打电话"));push_back(&L, creatNode(2023, 10, 9, "今天给同学辅导数学"));push_back(&L, creatNode(2023, 10, 10, "今天上体育"));//显示所有信息puts("\n\n显示所有信息");printAll(L);//查找 2023,10,4号的信息puts("\n\n查找 2023,10,4号的信息");date.year = 2023;date.month = 10;date.day = 4;node = findByDate(L,date);showNode(node);//更改10月4的信息puts("\n\n更改2023年10月4的信息");edit(node);//删除2023年10月5号的记录puts("\n\n删除2023年10月5号的记录");date.year = 2023;date.month = 10;date.day = 5;delete(&L,date);//显示所有信息puts("\n\n显示所有信息");printAll(L);destruction(&L);return 0;
}

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

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

相关文章

公司安防工程简要介绍及系统需求分析

多年来 从事安保监控领域的经验&#xff0c;在系统的功能要求、设备选型、施 工控制、 后期维护、人员配备等各方面反复论证&#xff0c;最终形成了本方案。在系统 的硬件选择上&#xff0c;把系统的稳定性、安全性、可靠性放在第一位。根据 招标文件的要求选用当今安防行业具…

FFmpeg:打印音/视频信息(Meta信息)

多媒体文件基本概念 多媒体文件其实是个容器在容器里面有很多流(Stream/Track)每种流是由不同的编码器编码的从流中读出的数据称为包在一个包中包含着一个或多个帧 几个重要的结构体 AVFormatContextAVStreamAVPacket FFmpeg操作流数据的基本步骤 打印音/视频信息(Meta信息…

LVGL_基础控件滚轮roller

LVGL_基础控件滚轮roller 1、创建滚轮roller控件 /* 创建一个 lv_roller 部件(对象) */ lv_obj_t * roller lv_roller_create(lv_scr_act()); // 创建一个 lv_roller 部件(对象),他的父对象是活动屏幕对象// 将部件(对象)添加到组&#xff0c;如果设置了默认组&#xff0c…

vim教程,看完这篇绝对够用啦

简介 vi 是一种命令行的文本编辑器,vim 是进阶版的 vi,gvim是vim的图形化版本。 Vim有几种基本的工作模式: 一般模式(Normal Mode, 命令模式,普通模式)一般模式是vim默认的模式,当打开一个文件时会自动进入此模式。 在此模式下,可以执行移动光标、滚动屏幕、删除字符…

不断优化的素数算法

前言&#xff1a;素数判断是算法中重要的一环&#xff0c;掌握优秀的素数判断方法是算法player的必修课。本文介绍的是由简到繁的素数算法&#xff0c;便于初学者从入门到精通。 素数&#xff08;质数&#xff09;&#xff1a;只能被 1 和它本身整除的数称作素数&#xff0c;如…

总结二:linux面经

文章目录 1、 Linux中查看进程运行状态的指令、查看内存使用情况的指令、tar解压文件的参数。2、文件权限怎么修改&#xff1f;3、说说常用的Linux命令&#xff1f;4、说说如何以root权限运行某个程序&#xff1f;5、 说说软链接和硬链接的区别&#xff1f;6、说说静态库和动态…

(四)正点原子STM32MP135移植——u-boot移植

一、概述 u-boot概述就不概述了&#xff0c;u-boot、kernel、dtb三件套&#xff0c;dddd 经过国庆艰苦奋战&#xff0c;已经成功把所有功能移植好了 二、编译官方代码 进入u-boot的目录 2.1 解压源码、打补丁 /* 解压源码 */ tar xf u-boot-stm32mp-v2022.10-stm32mp-r1-r0.…

充分理清限制与条件+构造二分图+最小割:ARC142E

https://www.luogu.com.cn/problem/AT_arc142_e 他的充要条件是是什么&#xff1a; a i , a j ≥ m i n ( b i , b j ) a_i,a_j\ge min(b_i,b_j) ai​,aj​≥min(bi​,bj​)存在 a i ≥ m a x ( b i , b j ) a_i\ge max(b_i,b_j) ai​≥max(bi​,bj​) 第一个条件直接预处理一…

Springcloud支付模块

客户端消费者80 order 微服务提供者8001 payment 订单模块可以调动支付模块 步骤&#xff1a; 1、建moudle 2、改写pom 3、写yml 4、主启类 5、业务类

【LinuxC】时间、时区,相关命令、函数

文章目录 一、序1.1 时间和时区1.11 时间1.12 时区 1.2 查看时间时区的命令1.21 Windows1.22 Linux 二、C语言函数2.1 通用2.11 函数简介2.12 数据类型简介 2.2 windows 和 Linux特有函数2.3 C语言示例 一、序 1.1 时间和时区 1.11 时间 时间是一种用来描述物体运动变化的量…

黑马点评-01基于Redis实现短信登陆的功能

环境准备 当前模型 nginx服务器的作用 手机或者app端向nginx服务器发起请求,nginx基于七层模型走的是HTTP协议,可以实现基于Lua直接绕开tomcat访问Redis nginx也可以作为静态资源服务器,轻松扛下上万并发并负载均衡到下游的tomcat服务器,利用集群支撑起整个项目 使用nginx部…

黑马JVM总结(二十七)

&#xff08;1&#xff09;synchronized代码块 synchronized代码块的底层原理&#xff0c;它是给一个对象进行一个加锁操作&#xff0c;它是如何保证如果你出现了synchronized代码块中出现了问题&#xff0c;它需要给这个对象有一个正确的解锁操作呢&#xff0c;加锁解锁是成对…

【c++_containers】10分钟带你学会list

前言 链表作为一个像是用“链子”链接起来的容器&#xff0c;在数据的存储等方面极为便捷。虽然单链表单独在实际的应用中没用什么作用&#xff0c;但是当他可以结合其他结构&#xff0c;比如哈希桶之类的。不过今天学习的list其实是一个带头双向链表。 言归正传&#xff0c;让…

overleaf在线编辑工具使用教程

文章目录 1 用 orcid注册overleaf获取模板2 使用模板 1 用 orcid注册overleaf获取模板 通常来说&#xff0c;在期刊投稿网站information for author中找template 。下载压缩包后上传到over leaf中。 加入找不到官方模板&#xff0c;用overleaf中的 2 使用模板 .bib文件&…

3D孪生场景SDK:Viwer 孪生世界

NSDT 编辑器 提供三维场景构建、场景效果设计、场景服务发布全流程工具等&#xff0c;其场景编辑器支持资产管理、灯光设置、骨骼动画等功能&#xff1b;致力于协助资源不足的中小企业及个人快速开发数字孪生场景&#xff0c;帮助企业提高生产力、实现降本增效。 NSDT编辑器简…

adb详细教程(四)-使用adb启动应用、关闭应用、清空应用数据、获取设备已安装应用列表

adb对于安卓移动端来说&#xff0c;是个非常重要的调试工具。本篇介绍常用的adb指令 文章目录 一、启动应用&#xff1a;adb shell am start二、使用浏览器打开指定网址&#xff1a;adb shell am start三、杀死应用进程adb shell am force-stop/adb shell am kill四、删除应用所…

【AI视野·今日CV 计算机视觉论文速览 第262期】Fri, 6 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Fri, 6 Oct 2023 Totally 73 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Improved Baselines with Visual Instruction Tuning Authors Haotian Liu, Chunyuan Li, Yuheng Li, Yong Jae Lee大型多模…

1.9.C++项目:仿muduo库实现并发服务器之Connection模块的设计

项目完整在&#xff1a; 文章目录 一、Connection模块&#xff1a;这是一个对于通信连接进行整体管理的一个模块&#xff0c;对一个连接的操作都是通过这个模块来进行&#xff01;二、提供的功能三、实现思想&#xff08;一&#xff09;功能&#xff08;二&#xff09;意义&am…

python开发幸运水果抽奖大转盘

概述 当我女朋友跟我说要吃水果&#xff0c;又不知道吃啥水果时候&#xff0c;她以为难为到我了&#xff0c;有啥事难为到程序员的呢&#xff01; 今天用python利用第三方tkinterthreadingtime库开发一个幸运水果抽奖大转盘&#xff01;抽到啥吃啥 详细 老规矩&#xff01;咱…

基于A4988/DRV8825的四路步进电机驱动器

概述 简化板的CNC sheild V3.0&#xff0c;仅保留步进电机速度与方向的控制引脚STEP/DIR、使能端EN、芯片供电VCC\GND&#xff0c;共计11个引脚。PCB四周开设四个M3通孔&#xff0c;以便于安装固定。此外&#xff0c;将板载的焊死的保险丝更改为可更换的保险座保险丝&#xff…