#include "stdafx.h"
#include <iostream>
using namespace std;
typedef struct Node
{
int nVal;
Node *pNext;
}Link,*pLink;
Link * CreateLink(int arr[], int n)
{
if (0 == n)
{
return NULL;
}
Link *pNew = new Link;
pNew->nVal = 0;
pNew->pNext = NULL;
Link *pRet = pNew;
for (int i=0; i<n; i++)
{
Node *p = new Node;
p->nVal = arr[i];
p->pNext = NULL;
pNew->pNext = p;
pNew = pNew->pNext;
}
return pRet->pNext;
}
void PrintLink(Link *pNew)
{
if (pNew == NULL)
{
cout<<"链表为空!"<<endl;
return;
}
Link *p = pNew;
while (p != NULL)
{
cout<<p->nVal;
p = p->pNext;
if (p != NULL)
{
cout<<"->";
}
else
{
cout<<endl;
}
}
}
void FreeLink(Link *&pNew)
{
Node *p = NULL;
while (pNew)
{
p = pNew->pNext;
delete pNew;
pNew = p;
}
pNew = NULL;
}
void DeleteValFromLink(Link *&pNew,int nVal)
{
Node head;
head.nVal = -1;
head.pNext = pNew;
Node *pHead = &head;
Node *pCur = NULL;
while (pHead->pNext != NULL)
{
pCur = pHead->pNext;
if (pHead->pNext->nVal == nVal)
{
pHead->pNext = pHead->pNext->pNext;
delete pCur;
pCur = NULL;
}
else
{
pHead = pHead->pNext;
}
}
pNew = head.pNext;
}
void ModifyValFromLink(Link *&pNew,int nPos,int nVal)
{
if (pNew == NULL)
{
return;
}
Node head;
head.nVal = -1;
head.pNext = pNew;
int i = 0;
Node *pHead = &head;
while (pHead->pNext != NULL)
{
if (nPos == ++i)
{
pHead->pNext->nVal = nVal;
break;
}
pHead = pHead->pNext;
}
pNew = head.pNext;
}
void InsertNodeToLink(Link *&pNew, int nPos,int nVal)
{
Node *insertNode = new Node;
insertNode->nVal = nVal;
insertNode->pNext = NULL;
Node head;
head.nVal = -1;
head.pNext = pNew;
int i = 0;
Node *pHead = &head;
while (pHead->pNext != NULL)
{
if (nPos == ++i)
{
insertNode->pNext = pHead->pNext;
pHead->pNext = insertNode;
break;
}
pHead = pHead->pNext;
}
pNew = head.pNext;
}
void main()
{
int arr[] = {1,2,2,1,4,5};
Link *pNew = CreateLink(arr,sizeof(arr)/sizeof(arr[0]));
PrintLink(pNew);
// DeleteValFromLink(pNew,2);
// DeleteValFromLink(pNew,1);
// PrintLink(pNew);
//InsertNodeToLink(pNew,4,3);
//PrintLink(pNew);
//ModifyValFromLink(pNew,5,10);
//PrintLink(pNew);
}相关推荐
SCU【C】程序设计基础期末安全项目lab2-Deadbeef-writeup(附题目&源码)
项目名称(本质:栈溢出攻击)【源码在文首】和lab1一样,此题又是美国卡耐基梅隆大学的平时作业哈哈哈! 项目要求是把栈溢出,强行更改函数返回值,输出0xdeadbeef。
(摘)c++数据结构---单链表的节点类和单链表的查找---(凌风)
3.2.2 单链表的节点类(程序3-5和程序3-6)有两个变量:一个指向下一个节点的指针和一个指向Ting对象的指针。节点类必须可以修改它指向它指向下一个节点的指针(setNext),并且取得该指针的值(getNext).此外,它还必须能够取得它所指向指针对象的地址(getThing). [程序3-5]单链表中节点类的声明 #ifndef NODE #define NODE #in
Ubuntu 20.04下IgH EtherCAT主站部署实战
本文详细介绍了在Ubuntu 20.04系统上部署IgH EtherCAT主站的完整流程,包括环境准备、源码编译、内核模块配置、网络接口设置及实时性优化等关键步骤。通过实战案例和常见问题排查,帮助开发者快速掌握EtherCAT主站部署技巧,提升工业自动化系统的稳定性和实时性。
C++链表学习
1、字符串和数组的共同点元素按照一定的顺序来排列,可以通过索引来访问数组中的元素和字符串中的字符。数组的大小通常是固定的,一单分配了内存空间,就难以动态地扩展或缩小。因为元素按照一定的顺序来排列,它们在计算机内存中的存储也是连续的,也就意味着当需要存储一些需要占用空间较大的内容,也只能找一些大块的内存区域,而空间比较小的内存区域就被浪费了,从而导致了内存资源浪费。数组要求所有元素具有相同的数据类型,字符串存储的都是字符,如果需要存储不同类型的数据,数组和字符串就显得无能为力了。
图像识别火灾检测系统实战:从火焰特征到YOLO部署全解析
计算机视觉技术正深入改变传统消防的感知方式。图像识别火灾检测利用摄像头采集的视频流,通过颜色、动态和形态特征分析,实现早期火情的自动发现与定位。其核心原理在于,火焰在视觉上具有独特的颜色分布、闪烁特性和轮廓变化,借助目标检测模型如YOLO,可在复杂场景中区分真实火焰与干扰物。这项技术广泛应用于仓库、园区、隧道等大空间场所,是智慧消防的重要支撑。本文从火焰视觉特征、数据集构建、模型选型与系统架构设计出发,结合部署实践中的误报与算力优化经验,为开发者提供一套可落地的视频火焰检测方案。
AWSIM模拟器 新增多相机
本文介绍了基于Unity6引擎对AWSIM自动驾驶模拟器的优化方案,主要针对多相机系统的扩展实现。作者通过修改EgoVehicle.cs和AutowareSimulationDemo.cs核心代码,将原单相机系统升级为5相机配置。关键技术点包括:1)使用List容器管理多个CameraSensor组件;2)完善相机初始化流程;3)配置5个相机UI显示窗口;4)修改ROS话题设置。优化后的系统可支持BEVFusion等多传感器融合算法的测试验证,为Autoware.universe 0.45.0及以上版本提供
c++基础链表学习
我们需要先找到它,这个方法和前面在末尾插入节点的方法有一点不同,因为我们要删掉最后一个节点,还要释放空间,所以我们需要一个指针指向最后一个节点,还需要一个指针指向它的前一个节点作为新的尾部。如果要插入一个值为a的节点,那么我们首先需要生成一个新节点。首先我们要找到第i个节点,判断第i个节点是否存在。如果链表为空(创建第一个节点的时候)3)把新节点插入到第i个节点后面。2)删除链表的最后一个节点。1) 将新节点插入到表头。1)删除链表中的第一个节点。2)将新节点插入到表尾。
公开 学生课堂行为数据集 SCB-Dataset: A Dataset for Detecting Student and Teacher Classroom Behavior
公开 学生课堂行为数据集 SCB-Dataset Student Classroom Behavior dataset
C++学习之动态数组和链表
C++学习之动态数组和链表
YOLOv8改进策略【Neck】| CGA Fusion:内容引导的注意力融合模块,空间权重引导的多模态特征自适应融合
本文记录的是利用CGA Fusion 模块改进 YOLOv8 的多模态融合部分。(Content-Guided Attention Fusion)通过内容引导注意力生成空间权重,引导高低层特征的自适应融合。本文利用模块,通过内容引导注意力生成空间权重,自适应地融合两个模态的特征,在特征融合阶段实现跨模态语义对齐与噪声抑制,增强对不同模态互补特征的利用能力,从而提升模型在多模态场景下的检测鲁棒性与准确性。DEA-Net: Single image dehazing based on detail-enhanc
TDS水质检测传感器原理图设计,已量产(液体传感器)
最近调试了一款针对生活用水、水培系统的 TDS 水质检测模块 —— 毕竟 TDS(总溶解固体)值直接关联水的洁净程度,是这类场景里既实用又易获取的水质指标。下面拆解下这个电路的设计逻辑,说说每个部分是怎么配合实现精准检测的。
C++算法学习——链表
C++算法专题:链表的学习。同时也有链表面试题中常用的技巧和操作
《Autosar_BSW高阶配置》总目录_培训教程持续更新中...
目录 一、Autosar COM Module 二、Autosar BswM Module 三、Autosar EcuM Module 四、Autosar DCM Module 五、Autosar DEM Module 六、其它Module陆续推出 欢迎大家订阅《Autosar_BSW高阶配置》专栏(可以理解为是Autosar培训教程),该专栏每周至少更新一篇,一次订阅,不再二次收费,献上常用的案例和配置方法。下方整理了相关博文的链接(单击蓝色字体即可跳转),方便大家获取。 本专栏...
c++链表学习
C++链表学习前言创建简单的链表合并两个有序链表总结 前言 最近在学习C++算法与数据结构,利用csdn写一些笔记帮助自己记忆,同时也希望对你们有用。 创建简单的链表 代码如下(示例): struct ListNode { int val; ListNode* next; ListNode(int value, ListNode* next1 = nullptr) //构造函数 { val = value; next = next1; } }; 根据上述代码我们自己定义了一个构造
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
C++学习之链表和回调函数
C++学习之链表和回调函数
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
C++学习——单链表(一)
本文为《C++学习》的第2篇文章,今天学习单链表。
NTscan扫描工具
ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。
C++学习链表
#include"pch.h" #include<iostream> #include<string> using namespace std; struct Student { int id; char number[16]; char name[16]; Student* next; }; //使用全局变量 S...
c++之链表的学习
由于之前C语言的时候未打好基础,所以我要重新学习链表了,以下是包含建立头节点,插入排序,打印,删除的函数。
C++个人学习 链表
链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为链表的头结点也就是head。
[学习笔记]C++实现链表
代码源NEU-数据结构课程 实现题目为函数:getMiddleelement() ,removeDuplicates(), reverse(),pairwiseSwap() #include <iostream> using namespace std; class LinkedList; class ListNode { public: friend class LinkedLi...
C++学习日志(链表补充)(2025.03.13)
【代码】C++学习日志(链表补充)(2025.03.13)
C++学习——链表
C++学习——链表 链表是一种物理存储单元上非连续、非顺序的存储结构。链表由一系列结点(链表中每一个元素称为结点)组成,每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 优点: 使用链表结构不需要预先知道数据大小,可以充分利用计算机内存空间,实现灵活的内存动态管理,链表还允许插入和移除表上任意位置上的节点。 缺点: 链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。 分类: 单向链表,双向链表以及循环链表 图示: 以下是一道例题 UVa11
C++学习链表过程
由于学习邓俊辉《数据结构》中第二章列表里仅仅提到了linked list这一个动态储存结构,并没有对链表进行过多介绍。在跟着《代码随想录》刷题的过程中,第二部分就是链表,因此写这篇链表学习过程为自己做一个刷提前的梳理。ps:之前学过MOCC上的C++课程。 链表 头文件 #include<iostream> #include<cstdlib> using namespace std; 链表的定义 链表分为:单链表、双链表、循环链表,根据字面意思就能理解是什么。 力扣做题
C++学习,链表
高效的插入和删除操作:在特定位置插入或删除节点的时间复杂度通常为 O (1),前提是知道要操作的位置的指针。C++ 中,链表是一种常见的数据结构。链表由一系列节点组成,每个节点包含数据和指向下一个节点的指针。随机访问困难:不像数组可以通过索引直接访问元素,链表需要从头节点开始遍历才能访问特定的节点。额外的内存开销:每个节点都需要额外的指针空间来存储指向下一个节点的引用。动态大小:可以根据需要添加或删除节点,不受固定大小的限制。
c++学习之链表
一、创建链表、链表的遍历 将三个学生的信息以链表形式表达 #include <iostream> using namespace std; struct student_message //首先定义一个结构体,包含名字、年龄、下一个人的地址 { char name[20];//名字创建一个字符数组来表示 int age; student_message *next;/*创建一个节点类型的指针变量,指针指向下一个节点,下一个节点又 包括年龄姓
C++之链表学习
C++链表从0到1
1544



被折叠的 条评论
为什么被折叠?



