单链表的构造和使用

数据结构c++单链表的实现及相关操作 1.无参构造函数——单链表的初始化 template<typename DataType> LinkList<DataType>::LinkList() { frist=new Node<DataType>; frist->next=nullptr; } 2.判空操作 单链表的判空操作只需判断单链表是否只有头结点,即判断frist->next是否为空。 3.遍历操作 template<typename DataType> void 阅读详情

单链表

  链表可用于存储数据,在嵌入式开发时会经常用到,下面使用以前做过的例子记录一下数据结构中单链表的实现的增删改查。

#include <stdlib.h>
#include <stdio.h>
 
//初始化结构体
typedef struct linklist{
	int id;//信息
	struct linklist *next; //指针域
}Node; //Node 是struct linklist结构体的别名
 
 
/*单链表的增、删、改、查*/
//初始化带头结点的单链表
Node* init_node(void)
{
	//创建新节点,并且为它申请堆内存
	Node* head = malloc(sizeof(Node)); //已创建的堆内存由程序员手动释放,free
	head->id = 0x00; //新节点的值指向0
	head->next = NULL; //新节点的指针域指向空
	return head; //返回头节点
}
 
//插入节点 pos表示节点要插入的位置
int insert_node(Node* node,int pos,int id)
{
	//为插入的节点申请内存
	Node* new = (Node*)malloc(sizeof(Node)); //(Node*)可要可不要
	int i = 1;
	 
	//如果插入的节点(new)与当前节点(node)(即new节点插入后的前一个节点)不为空,与节点数大于或者等于1个,
	if((node != NULL) && (new != NULL) && (pos>=1))
	{
		for(i;i< pos;i++)
		{
			node = node->next; //遍历节点,找到当前节点
		}
		new->next = node->next; //将新节点指向当前节点指向的区域(若只有头节点,node->next=NULL)?
		new->id = id;
		
		node->next = new; //当前节点指向新节点 
		return 0;
		
	}else
		return -1;
	
}
 
 
//删除节点
int delete_node(Node* head,int pos)
{
	int i=1;
	//让list这个结构体指针指向空
	 
	Node* list = NULL;
 
	if((head != NULL) && (pos >= 1))
	{
		/*新建一个结构体指针来指向头结点,node 就是表头节点
		?用current这个指针来遍历,找到当前节点 */
		Node* current = head;
		 
		//当i<pos的时候,不断的遍历,就是不断往下查找,直找到要删除的节点的上一个节点
		//pos就是节点所在的位置,比如删除第4节点,pos就是4,而current则会指向位置在3的节点。
		for(i;i<pos;i++)
		{	 
			current = current->next; 
		}
		list = current->next;  //当前节点指向要删除的节点
		current->next = list->next; //当前节点指向被删除节点的下一个节点(比如1->2->3)现在把2删除了,需要把1指向3
		 
		return 0;
	}else
		return -1;

}

 
//查找节点
Node* find_node(Node* head,int pos)
{
	int i = 1;
	Node* list = NULL;
	if((head != NULL) && (pos >= 1))
	{
		//使指针p指向传入的头结点
		Node* p = head;
	 
		//遍历找到要查找节点的上一个节点
		for(i;i<pos;i++)
		{		 
			p = p->next;
		}
		
		//p的下一个节点就是要查找的节点		
		list = p->next;
		 
		//返回要查找的节点 
		return list;
	}
 
	return NULL;
 
}
 
 
//获取链表长度
int length_list(Node* node)
{
	int count = 0;
	
	//遍历	
	while(1)
	{
		//如果节点的指针指向空,说明已经遍历到最后一个节点
		if(node->next == NULL) 
			break;
		count++;
		node = node->next;
	}
	//返回节点的数目
	return count;
}
 
 
//显示链表中所有节点
int display_list(Node* list)
{
	int i;
	//依次遍历节点
	for(i = 1; i <= length_list(list);i++)
	{
		//将找到的节点的id打印出来
		Node* list_d=find_node(list,i);
		printf("id is %d\n",list_d->id);
	}
 
}
 
 
int main()
{
	int i;
	 
	struct linklist * list = init_node();
	 	 
	insert_node(list,1,1);
	insert_node(list,2,2);
	insert_node(list,3,3);
	insert_node(list,4,4);
	
	printf("新增节点后的链表:\n");
	display_list(list);
	 
	printf("删除节点3后的链表:\n");
	delete_node(list,3);
	 
	display_list(list);
	 
	return 0;
}


 

 

YOLOv8 | 代码逐行解析(一) | 项目目录构造分析 Hello,大家好这次给大家带来的不是改进,是整个YOLOv8项目的分析,整个系列大概会更新7-10篇左右的文章,从项目的目录到每一个功能代码的都会进行详细的讲解,同时YOLOv8改进系列也突破了三十篇文章,最后预计本专栏持续更新会在年底更新上百篇的改进教程, 所以大家如果没有订阅专栏可以提前订阅以下。下面开始进行YOLOv8逐行解析的一篇——项目目录构造分析在这里给大家推荐我的YOLOv8改进有效涨点专栏,本专栏目前为新开的平均质量分98分,后期我会根据各种最新的前沿顶会进行论文复现,。 阅读详情

相关推荐

无人机飞控传感器全解析:从IMU到光流传感器的实战应用

本文深入解析了无人机飞控系统的核心传感器,从IMU、气压计、磁力计到光流传感器,详细阐述了其工作原理、数据融合策略及常见挑战。结合ICF5、Pixhawk 6C等主流飞控硬件,提供了从传感器校准、滤波器调优到应对室内光流定位、强磁干扰等实战场景的系统性优化指南,帮助开发者突破飞控“黑箱”,实现更稳定、可靠的飞行控制。

weixin_28396629的博客 166

单链表应用实例

在学习单链表之前,先简单了解一下链表 链表是有序的链表,但它在内存中是存储如下 链表是以节点的方式来存储的,是链式存储 每个节点包含data域、next域:指向下一个节点 链表的各个节点不一定是连续存储 链表分带头节点的链表和没有头结点的列表,根据实际需求来定 单链表(带头结点)逻辑结构示意图如下: 单链表的应用实例: 使用带head头节点的单向链表实现水浒英雄人物的增删改查操作 , 1....

jefferyfg的博客 2805

STM32学习笔记 二、基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发

系列文章目录 一、基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁 文章目录系列文章目录前言一、配置CubeMX二、逻辑代码部分 前言 这次我用的板子是一个用STM32F103C8T6作为主控芯片的一个数据采集卡,两个LED灯连接的引脚是PB3与PB4,TX与RX引脚分别是PA9和PA10。 一、配置CubeMX 1、新建工程; 2、配置时钟源,在RCC里面的HSE配置的是晶振时钟; 3、配置程序烧录引脚SYS为SWD模式; 4、配置GPIO口,配置一个LE

遗忘丶的博客 1万+

数据结构 —— 单链表(超详细图解 & 接口函数实现)

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。博主将会用代码结合大量图解,对数据结构进行深度剖析。

十里坡小白的博客 3862

Visio 2013安装遇阻?手把手教你搞定注册表权限错误1402(附64位系统特殊处理)

本文详细解析了Visio 2013安装过程中常见的注册表权限错误1402问题,特别是在64位系统下的特殊处理方法。通过分步指导如何修改注册表权限、处理Wow6432Node分支以及使用高级工具如subinacl,帮助用户顺利完成安装并避免常见连带问题。

t8u9v0w1x的博客 543

浅谈声发射振动复合传感器

浅谈声发射振动复合传感器 随着全球经济和自动化工业的迅速发展,人们对设备故障特别是轴承类的故障诊断也日益重视起来了。 为满足客户对旋转仪器轴承异常的精准诊断,单一的依靠振动信号或声信号分析,是很难兼顾轴承的多种异常情况的。 为此,市面上开始着手研发出了可同时分析机械设备的振动信号和声信号的复合型传感器。 初期的复合型传感器主要有 2 种类型,下面以 A、B 来举例说明。 A 型是在被测物表面不同的 2 个位置分别放置声发射(AE)传感器和加速度(ACC)传感器,它虽能一定程度...

pxtech的博客 1151

简单一文带你了解链表结构--附完整代码

非常简单好理解的链表教程

gentle_zou的博客 1428

生成模型实战 | 基于Transformer生成音乐

本文介绍了基于Transformer架构的音乐生成方法,将音乐视为一系列事件序列进行处理。与将音乐表示为多维图像的MuseGAN不同,该方法使用类似GPT的仅解码器模型,基于先前事件预测下一个音乐事件。模型使用MIDI格式的钢琴音乐数据,通过分词处理将音符转换为note-on、note-off、time-shift和velocity四种事件类型,共388个独特词元,映射为索引序列后输入网络。训练完成后,可通过调整温度参数控制生成音乐的新颖性,从而创作出风格类似训练数据且连贯逼真的音乐作品。

盼小辉丶的博客 5808

(五)数据结构-单链表

1. 链表是以节点的方式来存储,是链式存储; 2. 每个节点包含 data 域,next 域,next 域指向下一个节点; 3. 如图:发现链表的各个节点不一定是连续存放的; 4. 链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定。

zhufei463738313的博客 687

YOLOv11旋转目标检测详解:从原理到实战的全面指南

本文介绍了YOLOv11旋转目标检测技术的核心概念、架构设计与应用场景。传统目标检测使用水平边界框(AABB)存在背景噪声大、定位精度低等问题,而旋转边界框(OBB)通过引入角度参数显著提升了检测精度,在遥感、OCR、工业质检等领域具有独特优势。YOLOv11-OBB采用改进的多尺度检测层、CSPDarknet53骨干网络和双通道角度输出机制,在保持实时性的同时实现精确的旋转目标检测。实验表明,该方法在DOTA数据集上达到81.3%的mAP,相比传统方法提升显著,特别适合处理具有旋转特性或高宽比悬殊的目标。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 299

2026.2.3:OpenClaw国内安装教程,国内网络使用,服务器部署,对接飞书

本文介绍了如何创建飞书应用并接入OpenClaw机器人的完整流程。主要内容包括:1)在飞书开放平台创建企业自建应用,添加机器人能力并开通相关权限;2)在Windows11系统上安装OpenClaw,完成配置文件的修改(需将bind改为"lan");3)配置MiniMax国内接口地址,重启gateway服务。整个过程涵盖了应用创建、权限设置、软件安装、服务配置等关键步骤,为开发者提供了详细的飞书机器人接入指南。

拥抱具身智能,昇腾Ascend C 3991

单链表(图解以及分析)

(单向非循环不带头节点)

qq_54469537的博客 6360

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【C#数据结构】单链表

C#实现 首先,构造一个单链表的节点类: class Link<T> { public T Data; public Link<T> Next; /// <summary> /// 构造函数 /// </summary> /// &l...

万事屋银ちやん 221

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

单链表(C++)

数据结构(C++)单链表构造的前插方式与后接方式详解 无参构造函数: 先上代码: //模板类实现 template<class T> LinkList<T>::LinkList() { first = new Node<T>; first->next = NULL; } 这里不难看到,无参构造函数只是简单的构造了头节点:需要注意的是头节点只是标志了单链表的开始部分,不存储数据元素 前插方式建立单链表: //模板类 template<class T&g

m0_57102339的博客 237

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

构造有序的单链表

描述 构造有序(升序)的单链表 并实现单链表的逆置 (可以采用结构化的程序设计方法实现,即不必定义类) 输入 输入链表中的数据。(用0表示输入的结束,0不能添加到链表中) 输出 按顺序输出有序链表中的数据 //这题在数组里排序,再利用头插尾插的方式插入,方法有点low,操作起来容易一点 #include<iostream> #include<algorithm> #defi...

qq_43627106的博客 1290

单链表的实现

描述 定义单链表类,创建带头结点的单链表(节点类型为整型数据),要求包含以下成员函数: 头插法创建单链表(利用构造函数实现) 尾插法创建单链表(重载构造函数实现) 链表的遍历 按值删除一个节点 按位置删除一个节点 链表的析构 输入 输入一组数据,以尾插法的形式创建单链表(0表示输入结束)(构造第一个链表) 输入一组数据,以头插法的形式创建单链表(0表示输入结束)(构造第二个链表) 输入要删除元素的...

qq_43627109的博客 345

C++创建一个简单的单链表

创建一个节点的类模板头文件 #pragma once //节点类模板 //节点类模板的数据成员包括数据域和指针域 template<class datatype> class node { public : datatype data;//数据域 node<datatype>* next;//指针域 node();//无参构造 node(datatype e, node<datatype>* link = NULL);//有参构造 }; //无参构造 templa

hongfei1234567的博客 2761

单链表创建、查找(C语言)

#include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList; //采用头插法建立单链表 LinkList CreatList1(LinkList &L)...

某年某月某日 3924

数据结构--线性表的链式存储结构(单链表完全实现)、单链表反转

线性表的链式存储结构 单链表节点类 public class Node<T> { //数据域,保存数据元素 public T data; //地址域,引用后继节点 public Node<T> next; public Node(){ this(null,null); } public Node...

吴声子夜歌的博客 837

构造有序的单链表(线性表)

构造有序(升序)的单链表 并实现单链表的逆置 (可以采用结构化的程序设计方法实现,即不必定义类) 输入 输入链表中的数据。(用0表示输入的结束,0不能添加到链表中) 输出 按顺序输出有序链表中的数据 样例输入 4 1 6 8 2 0 样例输出 1 2 4 6 8 8 6 4 2 1 AC代码: #include<iostream> #include<algorithm> #...

weixin_43244265的博客 611

java内置单链表

我整理的一些关于【数据】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/eDOcp1Java内置单链表的深入解析 在Java的集合框架中,链表是一种非常重要的数据结构。尽管Java已经为我们提供了丰富的集合类,包括ArrayList和HashMap等,但单链表的结构在某些场合...

weixin_41524348的博客 71

头插法和尾插法创建、删除、遍历单链表

单链表的创建方式:头插法和尾插法 声明单链表的数据结构 //*head表示头插法链表的头指针 //*LinkListHead表示头插法创建的链表 //tail表示尾插法链表的头指针 //*LinkListTail表示尾插法创建的链表 struct Node { int data; Node *next; } *head,*tail,*LinkListHead,*LinkLi...

Sun.ME的博客 4595

【数据结构】单链表的实现

描述 定义单链表类,创建带头结点的单链表(节点类型为整型数据),要求包含以下成员函数: 头插法创建单链表(利用构造函数实现) 尾插法创建单链表(重载构造函数实现) 链表的遍历 按值删除一个节点 按位置删除一个节点 链表的析构 输入 输入一组数据,以尾插法的形式创建单链表(0表示输入结束)(构造第一个链表) 输入一组数据,以头插法的形式创建单链表(0表示输入结束)(构造第二个链表) 输入要删除元素的...

SuperSources的博客 631

线性表之单链表

template <typename T> struct Node {   T data;   Node<T> *next; //此处<T>也可以省略 }; 头结点:如果链表有头节点,则链式结构中的第一个节点称为头结点:其数据域可以存储一些附加信息,如链表长度;其指针域指向链表中的第一个节点。 单链表的实现 template ...

qq_43573743的博客 176

leetcode每日一题分享与单链表讲解

介绍完一般的单链表那接下来我们来介绍完在算法比晒中经常会用到的模拟单链表,在我们了解模拟单链表之前我们来了解一下我们为什么要使用模拟单链表呢,如果你看完了上面的单链表的代码就会知道我们在往单链表中插入一个值的时候我们会动态的给单链表动态的分配一个空间,所以我们在每次向单链表中插入一个值的时候都会用到new这个操做。通过上面的代码我们会发现如果我们要存储长度为500的单链表的化我们只需要另N的值为510,这里为什么会是510呢,这是因为小编有一个习惯会把数组的值开的比题目要求的略大一些以防止越界情况。

2401_89287772的博客 910
上一篇: c语言字符串函数概括
下一篇: 一学就会的数组指针例子详解
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值