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

C语言——单链表(增删改查)

C语言——单链表(增删改查)

一·链表一

#include<stdio.h>
#include<stdlib.h>
#include<string.h>typedef struct Test
{int data;struct  Test *next;
}Link;Link *head=NULL;Link* creatHead(Link* head);
void  AddLinkNode(Link* head,Link newnode);
void  printLinkNode(Link *head);
void  deleteLinkNode(Link* head,int data);
void  searchLink(Link* head,int data);
void  searchLink(Link* head,int data);
void  modifiLink(Link* head,int data,int newdata);int main(int argc,char** argv)
{   int i=0;Link tmp={0};int data=0;head=creatHead(head);for(i=0;i<5;i++){printf("输入第%d个节点的数据\n",i+1);scanf("%d",&tmp.data);AddLinkNode(head,tmp);}printLinkNode(head);printf("输入要删除的数据\n");scanf("%d",&data);deleteLinkNode(head,data);printLinkNode(head);searchLink(head,3);modifiLink(head,3,100);printLinkNode(head);return 0;
}//创建节点
Link* creatHead(Link* head)
{if(head==NULL){head=(Link*)malloc(sizeof(Link));head->next=NULL;}return head;
}//增加节点(尾插法)
void AddLinkNode(Link* head,Link newnode)
{Link *p=head;Link *new=(Link*)malloc(sizeof(Link));while(p->next!=NULL){p=p->next;}memcpy(new,&newnode,sizeof(Link));new->next=NULL;p->next=new;
}//遍历链表
void printLinkNode(Link *head)
{int cnt=0;Link* p=head;while(p->next!=NULL){cnt++;p=p->next;printf("%d ",p->data);}putchar('\n');
}//删除节点
void deleteLinkNode(Link* head,int data)
{Link* p=head;Link* tmp=NULL;while(p->next!=NULL){tmp=p;p=p->next;if(p->data==data){ tmp->next=p->next;free(p);p=head;}}
}//查找节点
void searchLink(Link* head,int data)
{Link* p=head;while(p->next!=NULL){if(p->data==data){printf("找到对应的节点:%d\n",p->data);}p=p->next;}if(p->next!=NULL){printf("未找到对应的节点\n");}
}    //修改节点
void modifiLink(Link* head,int data,int newdata)
{Link* p=head;while(p->next!=NULL){if(p->data==data){p->data=newdata;printf("把对应的节点修改为:%d\n",p->data);}p=p->next;}if(p->next!=NULL){printf("未找到对应的节点\n");}}

二·链表二

#include<stdio.h>
#include<stdlib.h>
#include<string.h>typedef  struct Test  
{char name[32];int  number;struct Test *next;
}Link; Link* head=NULL;Link*creatLinkNode(Link* head);
void AddLinkNode(Link* head,Link data);
void printLinkNode(Link* head);
void deleteLinkNode(Link* head,int num);int main(int argc,char** argv)
{Link data ={"xie",100};Link data1={"wen",200};Link data2={"hui",300};head=creatLinkNode(head);AddLinkNode(head,data);AddLinkNode(head,data1);AddLinkNode(head,data2);printLinkNode(head);deleteLinkNode(head,200);printLinkNode(head);return 0;
}//创建节点
Link* creatLinkNode(Link* head)
{if(head==NULL){head=(Link*)malloc(sizeof(Link));head->next=NULL;}return   head; 
}//增加节点(尾插法)
void AddLinkNode(Link* head,Link data)
{Link* p=head;Link* new=(Link*)malloc(sizeof(Link));while(p->next!=NULL){p=p->next;}memcpy(new,&data,sizeof(Link));p->next=new;new->next=NULL;
}//遍历链表
void printLinkNode(Link* head)
{Link* p=head->next;while(p!=NULL){printf("%s,%d\n",p->name,p->number);p=p->next;}// putchar('\n');
}//删除节点
void deleteLinkNode(Link* head,int num)
{Link* p=head;Link* tmp=NULL;while(p->next!=NULL){tmp=p;p=p->next;if(p->number==num){tmp->next=p->next;free(p);p=head;}}
}

三·链表三

#include<stdio.h>
#include<stdlib.h>
#include<string.h>typedef struct Test 
{char  name[32];int number;struct Test *next;
}Link;Link*  head=NULL;
Link* creatLink(Link* head);
void  printLink(Link* head);
void  AddLink(Link* head,Link data);
void  deleteLink(Link* head,int num);
void  saveLink(Link* head);
void  getLink(Link* head);#if 1
int main(int argc,char** argv)
{Link data={"xie",100};Link data1={"wen",200};Link data2={"hui",300};head=creatLink(head);AddLink(head,data);AddLink(head,data1);AddLink(head,data2);printLink(head);deleteLink(head,100);printLink(head);saveLink(head);getLink(head);printLink(head);return 0;
}
#endif#if 0
int main(int argc,char**  argv)
{head=creatLink(head);getLink(head);printLink(head);return  0;
}
#endifLink* creatLink(Link* head)
{if(head==NULL){head=(Link*)malloc(sizeof(Link));head->next=NULL;}return head;
}void printLink(Link* head)
{/*Link* p=head->next;while(p!=NULL){printf("%s,%d\n",p->name,p->number);p=p->next;}*/Link* p=head->next;while(p!=NULL){printf("%s,%d\n",p->name,p->number);p=p->next;}
}void AddLink(Link* head,Link data)
{ Link* p=head;Link* new=(Link*)malloc(sizeof(Link));while(p->next!=NULL){p=p->next;}memcpy(new,&data,sizeof(Link));p->next=new;new->next=NULL;
}void deleteLink(Link* head,int num)
{Link* p=head;Link* tmp=NULL;while(p->next!=NULL){tmp=p;p=p->next;if(p->number==num){tmp->next=p->next;free(p);p=head;}}
}void saveLink(Link* head)
{Link* p=head;FILE *fp=NULL;fp=fopen("./text.txt","w+");if(fp==NULL){printf("文件打开失败\n");return;}while(p->next!=NULL){fwrite(p,1,sizeof(Link),fp);p=p->next;}fclose(fp);
}/*void getLink(Link* head){Link* p=head;Link* new=(Link*)malloc(sizeof(Link));FILE* fp=NULL;Link  data;fp=fopen("./text.txt","rb");if(fp==NULL){printf("文件打开失败\n");return;}while(!feof(fp)){fread(&data,sizeof(Link),1,fp);AddLink(p,data);}fclose(fp);}*/
/*void  getLink(Link* head){FILE *fp=NULL;Link* p=head;Link* new=(Link*)malloc(sizeof(Link));new->next=NULL;fp=fopen("./text.txt","r+");{printf("打开文件失败\n");return ;}while((fread(new,sizeof(Link),1,fp))==1){p->next=new;p=new;new=(Link*)malloc(sizeof(Link));new->next=NULL;}free(new);fclose(fp);}*/void getLink(Link* head)
{Link* p=head;FILE* fp=NULL;Link data={0};fp=fopen("./text.txt","r+");if(fp==NULL){printf("文件打开失败\n");return;}while(!feof(fp)){fread(&data,1,sizeof(Link),fp);AddLink(head,data);}fclose(fp);
}

四·链表四

#include<stdio.h>
#include<stdlib.h>typedef struct ListNode
{int data;struct ListNode* next;
}ListNode;//创建节点
ListNode* createNode(int data)
{ListNode *node=(ListNode*)malloc(sizeof(ListNode));node->data=data;node->next=NULL;return node;
}//头插法
ListNode* insertNodeHead(ListNode *head,int data)
{ListNode *node=createNode(data);node->next=head;return node;
}//尾插法
ListNode *insertNodeTail(ListNode *head,int data)
{ListNode* node=createNode(data);ListNode* point=head;if(head==NULL){return NULL;}while(point->next!=NULL){point=point->next;}point->next=node;return head;
}//删除节点
ListNode* deleteNode(ListNode* head,int data)
{ListNode* point=head;if(head==NULL){return NULL;}if(head->data==data){head=head->next;free(point);return head;}while(point->next!=NULL&&point->next->data!=data){point=point->next;}if(point->next!=NULL){ListNode* node=point->next;point->next=node->next;free(node);  }return head;
}//修改节点
void updateNode(ListNode* head,int data,int newdata)
{ListNode* point=head;while(point!=NULL){if(point->data==data){point->data=newdata;}point=point->next;}
}//遍历节点
void printNode(ListNode* head)
{ListNode* point=head;while(point!=NULL){printf("%d ",point->data);point=point->next;}putchar('\n');
}//清楚节点
void clearNode(ListNode* head)
{while(head!=NULL){ListNode* point=head;head=head->next;free(point);}
}int main(int argc,char** argv)
{ListNode* head=NULL;head=insertNodeHead(head,1);head=insertNodeHead(head,2);head=insertNodeTail(head,3);printNode(head); head=deleteNode(head,2);printNode(head);updateNode(head,1,4);printNode(head);clearNode(head);return 0;
}

相关文章:

C语言——单链表(增删改查)

C语言——单链表(增删改查) 一链表一 #include<stdio.h> #include<stdlib.h> #include<string.h>typedef struct Test {int data;struct Test *next; }Link;Link *headNULL;Link* creatHead(Link* head); void AddLinkNode(Link* head,Link newnode); vo…...

Jenkins 保姆级教程

一、什么是流水线 jenkins 有 2 种流水线分为声明式流水线与脚本化流水线&#xff0c;脚本化流水线是 jenkins 旧版本使用的流水线脚本&#xff0c;新版本 Jenkins 推荐使用声明式流水线。文档只介绍声明流水线。 声明式流水线 在声明式流水线语法中&#xff0c;流水线过程定…...

基于 GPS 定位信息的 Pure-Pursuit 轨迹跟踪实车测试(1)

基于 GPS 定位信息的 Pure-Pursuit 轨迹跟踪实车测试&#xff08;1&#xff09; 进行了多组实验&#xff0c;包括顺逆时针转向&#xff0c;直线圆弧轨迹行驶&#xff0c;以及Pure-Pursuit 轨迹跟踪测试 代码修改 需要修改的代码并不多&#xff0c;主要对 gps_sensor 功能包和…...

4.25每日一题(通过被积函数和积分区域(不等式)选正确的坐标系求二重积分)

一、正确画出积分区域&#xff1b;通过积分区域和被积函数选择方法 二、如何根据被积函数和积分区域正确选择通过极坐标还是根据直角坐标方程计算&#xff1a; &#xff08;1&#xff09;适合极坐标的积分区域&#xff1a;圆或者部分圆 &#xff08;2&#xff09;适合极坐标的…...

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(八)

套餐模块功能开发 1. 新增套餐1.1 需求分析和设计1.1.1产品原型&#xff1a;1.1.2接口设计&#xff1a;1.1.3数据库设计&#xff1a; 1.2 代码开发1.2.1 DishController层1.2.2 DishService接口类1.2.3 DishServiceImpl接口实现类1.2.4 DishMapper层1.2.5 DishMapper.xml1.2.6 …...

Visual NLP:图像信息自动提取的未来

本文旨在以简单的方式解释 Visual NLP 的关键概念&#xff0c;让你了解 Visual NLP 的含义、它的用例是什么、如何使用它以及为什么它是构建自动提取管道的未来 。 NSDT在线工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在…...

力扣118双周赛

第 118 场双周赛 文章目录 第 118 场双周赛查找包含给定字符的单词最大化网格图中正方形空洞的面积购买水果需要的最少金币数找到最大非递减数组的长度 查找包含给定字符的单词 模拟 class Solution { public:vector<int> findWordsContaining(vector<string>&am…...

网络编程基本概念

网络编程基本概念 为什么需要网络编程&#xff1f; 用户在浏览器中&#xff0c;打开在线视频网站&#xff0c;如优酷看视频&#xff0c;实质是通过网络&#xff0c;获取到网络上的一个视频资源。 与本地打开视频文件类似&#xff0c;只是视频文件这个资源的来源是网络。 相…...

Flutter模板

简介 这个项目是Flutter应用程序的起点。与创建的官方默认模板相比&#xff0c;该项目实现了状态管理等功能&#xff0c;用于Url、本地化等的Navigator 2.0路由。 开始 该项目的入口文件为 ‘lib/init/init.dart’ 特性 状态管理 基于provider. Navigator 2.0适配 代码…...

坐标变换(其一)CSP

坐标变换&#xff08;其一&#xff09; 问题描述 对于平面直角坐标系上的坐标 (x,y)&#xff0c;小 P 定义了一个包含 n 个操作的序列 T(t1,t2,⋯,tn)。其中每个操作 ti&#xff08;1≤i≤n&#xff09;包含两个参数 dxi 和 dyi&#xff0c;表示将坐标 (x,y) 平移至 (xdxi,yd…...

C语言实现万年历

C语言实现万年历 一、项目介绍 需求和功能是用纯C语言实现一个可以属于年份&#xff0c;属于一个年份就可以显示该年各个月份的日历&#xff0c;如同日历一般&#xff0c;每个月当中每天对应的星期均可查看&#xff0c;即万年历&#xff0c;要求格式整齐&#xff0c;星期对照直…...

arp报文及使用go实现

一、ARP协议报文格式及ARP表 ARP&#xff08;Address Resolution Protocal&#xff0c;地址解析协议&#xff09;是将IP地址解析为以太网的MAC地址&#xff08;或者称为物理地址&#xff09;的协议。在局域网中&#xff0c;当主机或其他网络设备有数据要发送给另一个主机或设备…...

C++ 文件和流、异常处理、动态内存、预处理器

一、C文件和流&#xff1a; 在C中进行文件处理&#xff0c;需要包含头文件<iostream>和<fstream>。fstream标准库定义的三个新的数据类型&#xff1a; 数据类型 描述 ofstream 该数据类型表示输出文件流&#xff0c;用于创建文件并向文件写入信息。 ifstream …...

夜神模拟器 burp抓包 ADB 微信小程序

夜神模拟器 burp抓包 ADB 微信小程序 初始环境准备应用连接证书转换设置夜神模拟器环境ADB配置测试burp抓包 初始环境准备 既然想了解如何抓包&#xff0c;我想大多数是已经安装好 夜神模拟器 和 Burp 了&#xff0c;这里就不在赘述&#xff0c;直接开始操作。 openssl 的下载…...

WPF实战项目十七(客户端):数据等待加载弹框动画

1、在Common文件夹下新建文件夹Events&#xff0c;新建扩展类UpdateLoadingEvent public class UpdateModel {public bool IsOpen { get; set; }}internal class UpdateLoadingEvent : PubSubEvent<UpdateModel>{} 2、新建一个静态扩展类DialogExtensions来编写注册和推…...

22-Python与设计模式--状态模式

22-Python与设计模式–状态模式 一、电梯控制器 电梯在我们周边随处可见&#xff0c;电梯的控制逻辑中心是由电梯控制器实现的。电梯的控制逻辑&#xff0c;即使简单点设计&#xff0c; 把状态分成开门状态&#xff0c;停止状态和运行状态&#xff0c;操作分成开门、关门、运…...

电脑键盘推荐

一、键盘分类 &#xff08;1&#xff09;键位个数 目前有75&#xff0c;84&#xff0c;87&#xff0c;98&#xff0c;104&#xff0c;108的。 &#xff08;2&#xff09;薄膜键盘和机械键盘 薄膜键盘就是大多数办公室常见的键盘&#xff0c;主要打一个便宜&#xff0c;耐造…...

大数据-之LibrA数据库系统告警处理(ALM-37001 MPPDBServer实例Redo日志缺失)

告警解释 当DN主实例有未同步到DN备实例的xlog日志被删除时&#xff0c;产生该告警。 告警属性 告警ID 告警级别 可自动清除 37001 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产生告警的主机名…...

C#关键字、特性基础及扩展合集(持续更新)

一、基础 Ⅰ 关键字 1、record record&#xff08;记录&#xff09;&#xff0c;编译器会在后台创建一个类。支持类似于结构的值定义&#xff0c;但被实现为一个类&#xff0c;方便创建不可变类型&#xff0c;成员在初始化后不能再被改变 &#xff08;C#9新增&#xff09; …...

单例模式-支持并发的C语言实现

代码实现&#xff1a; c #include <stdio.h> #include <stdlib.h> #include <pthread.h>// 定义单例对象结构体 typedef struct {// 单例对象的数据成员int value; } Singleton;// 静态变量&#xff0c;用于保存唯一实例的指针 static Singleton* instance …...

VSCode终端执行npm命令失败的排查与修复(Powershell方案)

1. 问题场景还原&#xff1a;为什么VSCode终端跑不动npm&#xff1f; 最近在项目里碰到个怪事&#xff1a;用系统自带的CMD窗口跑npm install一切正常&#xff0c;但切回VSCode内置终端就报"npm不是可识别的命令"。这种割裂感就像手机连WiFi能上网但电脑连同一个WiFi…...

30 分钟搞定答辩 PPT!Paperxie AI 生成器:本科生的毕业开挂神器

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 一、 毕业答辩的 “最后一道坎”&#xff1a;PPT 比论文还磨人&#xff1f; 论文定稿的那一刻&#xff0c;你以为终于能松口…...

Win11Debloat深度解析:模块化架构设计如何实现Windows系统70%性能优化

Win11Debloat深度解析&#xff1a;模块化架构设计如何实现Windows系统70%性能优化 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to d…...

快速上手 FakeStoreAPI:5分钟学会使用免费电商数据接口

快速上手 FakeStoreAPI&#xff1a;5分钟学会使用免费电商数据接口 【免费下载链接】fake-store-api FakeStoreAPI is a free online REST API that provides you fake e-commerce JSON data 项目地址: https://gitcode.com/gh_mirrors/fa/fake-store-api FakeStoreAPI …...

GORM Gen实战教程:如何从数据库表自动生成Golang结构体

GORM Gen实战教程&#xff1a;如何从数据库表自动生成Golang结构体 【免费下载链接】gen Gen: Friendly & Safer GORM powered by Code Generation 项目地址: https://gitcode.com/gh_mirrors/ge/gen GORM Gen是一款基于GORM的代码生成工具&#xff0c;它能帮助开发…...

用Cursor和MCP构建自动化Agent:从零复现Manus工作流

1. 为什么需要自动化Agent工作流 在当今快节奏的开发环境中&#xff0c;手动完成重复性任务已经成为效率的最大瓶颈。想象一下&#xff0c;每次接到新需求都要手动创建项目目录、初始化环境、编写基础代码、部署到GitHub&#xff0c;这个过程不仅耗时&#xff0c;而且容易出错…...

课设毕设救急!亲测可跑 SpringBoot 厨艺交流平台源码论文,直接上手少熬夜!

做交流类、平台类课设毕设真的太磨人了&#xff0c;从零写发帖、评论、用户管理这些功能&#xff0c;熬好几天还到处是bug。作为踩过无数坑的学长&#xff0c;今天把我自用、亲测能稳定运行的厨艺交流平台源码分享给你&#xff0c;全是能直接用的干货。这份资料是什么 这是一套…...

从零构建:Esp32+Esp-IDF驱动ST7789屏幕并集成LVGL图形库

1. 环境准备与工程创建 第一次玩ESP32ST7789屏幕的朋友可能会觉得有点懵&#xff0c;其实只要跟着步骤走&#xff0c;半小时就能点亮屏幕。我去年在智能家居项目里用了这个组合&#xff0c;实测稳定性比I2C屏幕强不少。先说说需要准备的东西&#xff1a; 硬件部分&#xff1a;E…...

把 SAP Enterprise Search 的安全边界真正收紧,别只盯着搜索框

很多团队做 Enterprise Search,上线前会把精力放在连接器、索引、搜索模型、Fiori 搜索入口这些看得见的地方,等到真正进生产,问题却常常出在另一个层面,谁能搜、能搜到多少、跨系统怎么传、日志里留下了什么、底层 HANA 的数据有没有被妥善保护。SAP 官方文档对这件事的态…...

墨语灵犀Java开发实战:集成SpringBoot构建智能问答API

墨语灵犀Java开发实战&#xff1a;集成SpringBoot构建智能问答API 最近在做一个内部知识库项目&#xff0c;需要给系统加上智能问答的能力。团队评估了几种方案&#xff0c;最终决定基于墨语灵犀大模型&#xff0c;用我们最熟悉的Java和SpringBoot来构建API服务。整个过程走下…...