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

我的创作纪念日——《惊变128天》

我的创作纪念日——《惊变128天》

    • 机缘
    • 收获
    • 日常
    • 成就
    • 憧憬


在这里插入图片描述


机缘

时光飞逝,转眼间,我已在这条创作之路上走过了 128 天。回顾起 2024 年 8 月 29 日,我满怀忐忑与期待,撰写了第一篇技术博客《讲解LeetCode第1题:两数之和(完整代码)》。彼时,我未曾想到,这平凡的一天,会成为我创作旅程的起点,赋予我如此多的意义与价值。

回想起最初成为创作者的初心,源自于对技术探索的热情与分享的欲望。彼时,我在技术的海洋里奋力遨游,接触到诸多复杂难题,每一次攻克后的喜悦都如璀璨星辰照亮我前行的方向。然而,随着学习的深入,愈发感觉知识如浩瀚宇宙,无边无际。我意识到,若想真正将所学内化,将经验沉淀,创作技术博客是不二之选。它既能帮我系统梳理知识脉络,又能为同行们提供参考,搭建起一座知识共享的桥梁。就像《讲解 LeetCode 第 1 题:两数之和 (完整代码)》,那是我学习路上的一个小小里程碑,我希望通过记录解题过程,不仅让自己加深理解,更能让遇到同样困惑的朋友少走弯路,于是开启了这段创作旅程。


收获

在创作的这128天里,我收获了诸多宝贵的财富。首先,我的粉丝数量稳步增长,从最初的寥寥数人到如今我开始写这篇博客时已经获得了300名粉丝了,这让我感到非常欣慰。其次,我的文章也获得了大量的正向反馈,无论是点赞、评论还是阅读量,都见证了我的努力与成长,这些反馈不仅是对我内容的认可,更是我继续创作的动力源泉。更重要的是,我通过文章结识了许多志同道合的领域同行。

同时,我的技术确实也获得了巨大的成长。从最初对技术知识的懵懂,到如今我对各种算法和编程知识有了更深层次的理解;从对文章结构的生疏,到能够清晰地组织思路、条理分明地阐述观点。每一次创作,都是一次自我挑战与突破。例如:为了使博客更加的美观清晰,我系统的学习了轻量型的标记语言Markdown;为了使讲解的算法题更直观易懂,我又学习了如何去作图。


日常

创作已然融入我的生活,成为不可或缺的一部分。在忙碌的学习间隙中,它是我心灵的栖息地。当然,创作的过程并非一帆风顺。有时面临考试备考很少有时间写博客,但对技术的热爱和分享的热情驱使我在深夜仍坚持敲击键盘,将自己的所学所思记录下来。

我也有过疲惫不堪而短暂停笔的时刻,可内心深处总有个声音提醒我不要忘记这份初心。我深知精力有限,所以学习巧妙平衡。白天利用通勤路上碎片化时间构思文章框架,晚上时整理资料,编写文章。如此一来,创作不仅未与学习冲突,反而相辅相成,学习中的知识为创作提供鲜活素材,创作过程中的知识梳理又助力学习难题迎刃而解,学习也因持续输出而更加扎实深入。


成就

在过去的日子里,我写过许多代码,但最让我自豪的是博客 单向链表的基本操作【下】(多种方法+测试代码+图像展示)中的代码。这篇博客里的代码是由我花费数天,通过不断的调试、修改,再调试、再修改而得到的最终精简版,同时这篇博客也是我的呕心沥血之作。

以下是我从这篇博客中精选的其中一段代码:

//单向链表节点的“插入+删除+查找+求表长”操作汇总小程序
#include<iostream>
using namespace std;struct ListNode
{int data;ListNode* next;ListNode(int val) :data(val), next(nullptr) {}
};class LinkList
{
public://显示基本操作菜单界面void menuList(){cout << "*********************单向链表的基本操作**********************" << endl;cout << "--------------------1.插入单向链表的节点---------------------" << endl;cout << "--------------------2.按位删除单向链表的节点------------------" << endl;cout << "--------------------3.按值删除单向链表的节点------------------" << endl;cout << "--------------------4.由位查找单向链表的节点------------------" << endl;cout << "--------------------5.由值查找单向链表的节点------------------" << endl;cout << "--------------------6.求长单向链表--------------------------" << endl;cout << "--------------------0.退出该小程序--------------------------" << endl;cout << "**********************************************************" << endl;}//单向链表节点的插入——任意插ListNode* insertListNode(ListNode*& head, int position, int value){int currSite = 1;ListNode* curr = head;if (position == 1){ListNode* newNode = new ListNode(value);newNode->next = head;head = newNode;return head;}else{while (curr != nullptr && currSite < position - 1){curr = curr->next;currSite++;}if (curr == nullptr || position < 0){return nullptr;}else{ListNode* newNode = new ListNode(value);newNode->next = curr->next;curr->next = newNode;return head;}}}//单向链表节点的删除——按位删除-迭代法(带哑节点的形式)ListNode* deleteListNode_P(ListNode*& head, int position){int currSite = 1;ListNode* dummy = new ListNode(-1);ListNode* curr = dummy;dummy->next = head;if (position <= 0){return nullptr;}else{while (curr->next != nullptr && currSite < position){curr = curr->next;currSite++;}if (curr->next == nullptr){return nullptr;}else{ListNode* delNode = curr->next;curr->next = curr->next->next;delete delNode;}head = dummy->next;delete dummy;return head;}}//单向链表节点的删除——按值删除-迭代法ListNode* deleteListNode_V(ListNode*& head, int value){ListNode* dummy = new ListNode(-1);dummy->next = head;ListNode* curr = dummy;while (curr->next != nullptr){if (curr->next->data != value){curr = curr->next;}else{ListNode* temp = curr->next;curr->next = curr->next->next;delete temp;}}head = dummy->next;delete dummy;return head;}//单向链表节点的查找——由位查值-迭代法void findListNode_P(ListNode* head, int position){int currSite = 1;ListNode* curr = head;if (head == nullptr || position <= 0){return;}while (curr != nullptr && currSite < position){curr = curr->next;currSite++;}if (curr == nullptr){return;}else{cout << "位置" << position << "上的节点的值为:" << curr->data << endl;return;}}//单向链表节点的查找——由值查位-迭代法void findListNode_V(ListNode* head, int value){int currSite = 1;ListNode* curr = head;while (curr != nullptr){if (curr->data == value){cout << "值为" << value << "的节点所在的位置为:" << currSite << endl;}curr = curr->next;currSite++;}}//单向链表的求长——迭代法void lengthList(ListNode* head){int length = 0;ListNode* curr = head;if (head == nullptr){cout << "该单向链表的长度为:" << length << endl;return;}while (curr != nullptr){curr = curr->next;length++;}cout << "该单向链表的长度为:" << length << endl;return;}//单向链表的打印——迭代void printList(ListNode* head){ListNode* curr = head;while (curr != nullptr){cout << curr->data << " ";curr = curr->next;}cout << endl;}
};int main()
{LinkList list;//单向链表的创建ListNode* head = new ListNode(3);head->next = new ListNode(2);head->next->next = new ListNode(1);head->next->next->next = new ListNode(3);int n = INT_MAX;while (n != 0){cout << "现在的单向链表为:" << endl;list.printList(head);list.menuList();cout << "请输入菜单号" << endl;cin >> n;int position, value;switch (n){case 1://单向链表节点的插入//int position, value;cout << "请输入你要插入的节点的位置" << endl;cin >> position;cout << "请输入你要插入的节点的值" << endl;cin >> value;cout << "已在位置" << position << "上插入值为" << value << "的节点" << endl;list.insertListNode(head, position, value);break;case 2://单向链表节点的删除//int position;cout << "请输入你要删除的节点的位置" << endl;cin >> position;cout << "已将位置" << position << "上的节点删除" << endl;list.deleteListNode_P(head, position);break;case 3://单向链表节点的删除//int value;cout << "请输入你要删除的节点的值" << endl;cin >> value;cout << "已将值为" << value << "的节点删除" << endl;list.deleteListNode_V(head, value);break;case 4://单向链表节点的查找//int position;cout << "请输入你要查找的位置" << endl;cin >> position;list.findListNode_P(head, position);break;case 5://单向链表节点的查找//int value;cout << "请输入你要查找的节点的值" << endl;cin >> value;list.findListNode_V(head, value);break;case 6:///单向链表的求长list.lengthList(head);break;}}return 0;
}

这段代码是单向链表节点的“插入+删除+查找+求表长”操作的汇总小程序。每当我回顾这段代码,我都会想起当时自己初次接触单向链表时的那份好奇与困惑。

从最初的无法理解节点间的指针关系,到后来能够熟练地实现插入、删除、查找和求表长等操作,每一步都凝聚了我的汗水与努力。这段代码不仅见证了我的技术成长,更成为了我面对挑战、不懈探索的宝贵记忆。如今,每当我再次审视它,都会涌起一股自豪与感激之情,它是我技术旅程中一个重要的里程碑。


憧憬

未来,我希望能够在技术领域继续深耕,不断提升自己的专业能力。在职业上,我希望能够成为一名优秀的软件开发工程师,不仅掌握各种编程语言与技术框架,还能在算法设计与系统架构方面有所建树。在创作上,我将继续坚持分享有价值的技术文章,不仅涵盖C/C++、算法与数据结构等核心技术领域,还将涉及操作系统和计算机网络等方向。

最后,感谢CSDN的鼓励与支持,也感谢每一位读者的陪伴与反馈。未来的路还很长,我会继续努力,不忘初心,砥砺前行!


在这里插入图片描述

相关文章:

我的创作纪念日——《惊变128天》

我的创作纪念日——《惊变128天》 机缘收获日常成就憧憬 机缘 时光飞逝&#xff0c;转眼间&#xff0c;我已在这条创作之路上走过了 128 天。回顾起 2024 年 8 月 29 日&#xff0c;我满怀忐忑与期待&#xff0c;撰写了第一篇技术博客《讲解LeetCode第1题&#xff1a;两数之和…...

vuedraggable 选项介绍

vuedraggable 是基于 SortableJS 的 Vue 组件&#xff0c;提供了丰富的选项来定制拖拽行为。以下是 vuedraggable 常用的选项和它们的详细说明&#xff1a; 常用选项介绍 group 配置拖拽分组。多个列表可以共享同一个分组&#xff0c;允许它们之间的项目互相拖拽。 group: { na…...

微信小程序获取后端数据

在小程序中获取后端接口数据 通常可以使用 wx.request 方法&#xff0c;以下是一个基本示例&#xff1a; // pages/index/index.js Page({data: {// 用于存储后端返回的数据resultData: [] },onLoad() {this.fetchData();},fetchData() {wx.request({url: https://your-backe…...

ThreadLocal` 的工作原理

ThreadLocal 的工作原理&#xff1a; ThreadLocal 是 Java 提供的一个类&#xff0c;它用于为每个线程提供独立的变量副本。也就是说&#xff0c;多个线程访问同一个 ThreadLocal 变量时&#xff0c;每个线程看到的值都是不同的&#xff0c;相互隔离&#xff0c;互不干扰。 T…...

数据挖掘教学指南:从基础到应用

数据挖掘教学指南&#xff1a;从基础到应用 引言 数据挖掘是大数据时代的核心技术之一&#xff0c;它从大量数据中提取有用信息和知识。本教学文章旨在为学生和初学者提供一个全面的数据挖掘学习指南&#xff0c;涵盖数据挖掘的基本概念、流程、常用技术、工具以及教学建议。…...

大模型搜索引擎增强问答demo-纯python实现

流程概览 本文使用python语言,实现了大模型搜索引擎增强问答demo。 大模型搜索引擎增强问答定义:根据问题搜索得到相关内容,拼接prompt=问题+搜索结果,将这个prompt传入大模型,得到最终的结果。 优势在于搜索引擎可以返回实时性信息,例如明日双色球开奖信息、最新八卦…...

【C语言程序设计——选择结构程序设计】按从小到大排序三个数(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 编程要求 相关知识 1. 选择结构 2. 主要语句类型 3. 比较操作 4. 交换操作 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;从键盘上输入三个数&#xff0c;请按从小到大的顺序排序并打印输出排序后的结果。 编程要求 根据提示…...

简洁安装配置在Windows环境下使用vscode开发pytorch

简洁安装配置在Windows环境下使用vscode开发pytorch 使用anaconda安装pytorch&#xff0c;通过vscode集成环境开发pytorch 下载 anaconda 下载网址&#xff0c;选择对应系统的版本 https://repo.anaconda.com/archive/ windows可以选择Anaconda3-2024.10-1-Windows-x86_64.e…...

conda安装及demo:SadTalker实现图片+音频生成高质量视频

1.安装conda 下载各个版本地址&#xff1a;https://repo.anaconda.com/archive/ win10版本&#xff1a; Anaconda3-2023.03-1-Windows-x86_64 linux版本&#xff1a; Anaconda3-2023.03-1-Linux-x86_64 Windows安装 环境变量 conda -V2.配置conda镜像源 安装pip conda…...

【面试】后端开发面试中常见数据结构及应用场景、原理总结

在后端开发面试中&#xff0c;常见的数据结构包括数组、链表、栈、队列、二叉树、平衡树、堆、图和哈希表等。以下是这些数据结构的总结&#xff0c;包括它们的应用场景、优缺点。 常见数据结构及其应用场景 数据结构应用场景数组存储固定大小的数据集合&#xff0c;如学生成…...

141.《mac m系列芯片安装mongodb详细教程》

文章目录 下载从官网下载安装包 下载后双击解压出文件夹安装文件名修改为 mongodb配置data存放位置和日志log的存放位置启动方式一方式二方式二:输入mongo报错以及解决办法 本人电脑 m2 pro,属于 arm 架构 下载 官网地址: mongodb官网 怎么查看自己电脑应该下载哪个版本,输入…...

Java 23 集合框架详解:ArrayList、LinkedList、Vector

&#x1f4da; Java 23 集合框架详解&#xff1a;ArrayList、LinkedList、Vector 在 Java 集合框架中&#xff0c;ArrayList、LinkedList 和 Vector 是三种最常用的 List 接口实现类。它们都可以存储有序的、可重复的元素&#xff0c;但它们在 底层实现、性能 和 多线程安全 等…...

03、MySQL安全管理和特性解析(DBA运维专用)

03、MySQL安全管理和特性解析 本节主要讲MySQL的安全管理、角色使用、特定场景下的数据库对象、各版本特性以及存储引擎 目录 03、MySQL安全管理和特性解析 1、 用户和权限管理 2、 MySQL角色管理 3、 MySQL密码管理 4、 用户资源限制 5、 忘记root密码处理办法 6、 SQ…...

创建型模式5.单例模式

创建型模式 工厂方法模式&#xff08;Factory Method Pattern&#xff09;抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;建造者模式&#xff08;Builder Pattern&#xff09;原型模式&#xff08;Prototype Pattern&#xff09;单例模式&#xff08;Singleto…...

用户界面软件02

基于表单的用户界面 在“基于表单的用户界面”里面&#xff0c;用户开始时选中某个业务处理&#xff08;模块&#xff09;&#xff0c;然后应用程序就使用一系列的表单来引导用户完成整个处理过程。大型机系统上的大部分用户界面都是这样子的。[Cok97]中有更为详细的讨论。 面…...

VTK 鼠标+键盘重构

1、鼠标事件 如果有鼠标事件处理等相应的需求,可以重写该事件。 void OnMouseMove() override; //鼠标移动事件 void OnLeftButtonDown() override;//左键按下事件 void OnLeftButtonUp() override;//左键抬起事件 void OnMiddleButtonDown() override;//滚轮按下事件 …...

go语言处理JSON数据详解

一、结构体与json之间的转换 Go语言处理JSON数据通常涉及到将JSON数据解析成Go结构体,或者将Go结构体序列化为JSON格式。Go提供了内置的encoding/json包来实现这些操作。下面详细介绍如何在Go中处理JSON数据。 1. Go结构体与JSON映射 Go语言的encoding/json包可以将JSON数据…...

基于gin一个还算比较优雅的controller实现

看了两天时间的go&#xff0c;对于go的编码风格还不是很了解&#xff0c;但是了解到go并未有Java那样成体系的编码风格规范&#xff0c;所以自己浅尝试了一下&#xff0c;风格无对错&#xff0c;欢迎交流讨论&#xff5e; controller层&#xff1a; package …...

PDFMathTranslate: Star13.8k,一款基于AI的PDF文档全文双语翻译PDF文档全文双语翻译,保留格式神器,你应该需要它

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 PDFMathTranslate是一个开源项目&#xff0c;旨在为用户提供便捷的PDF科学论文翻译解决方案。它不仅能够翻译文本&#xff0c;还能保留公式、图表、目…...

Python编程实例-特征向量与特征值编程实现

特征向量与特征值编程实现 文章目录 特征向量与特征值编程实现1、什么是特征向量2、特征向量背后的直觉3、为什么特征向量很重要?4、如何计算特征向量?4、特征向量Python实现5、可视化特征向量6、总结线性代数是许多高级数学概念的基石,广泛应用于数据科学、机器学习、计算机…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...