C++链表

2023-05-16

上个简单链表,写的有些难看,现在更改一下

https://liu-endong.blog.csdn.net/article/details/111934018

添加了删除尾结点,添加了删除头结点

#include <stdio.h>
#include<malloc.h>

#define LEN sizeof(struct List)

#if 1   //1开启 0关闭  VS2019开启 codeblocks关闭
#define scanf scanf_s
#endif


//定义节点
struct List
{
	int num;
	struct List* next;
};

struct List* creat()
{
	struct List* head = (struct List*)malloc(LEN);
	head->num = 0;  //存储链表长度,理论上头结点不需要数据域
	head->next = NULL;
	return head; 
}

//尾插法加一个节点
struct List* addList(List* head, int num)
{
	struct List* p;
	p = head;
	while (p->next)
	{
		p = p->next;
	}
	p->next = (struct List*)malloc(LEN);
	p->next->num = num;
	p->next->next = NULL;
	head->num++;
	printf("加入一个节点后链表长度 %d \n", head->num);
	return head;
}

//按存储的数据删除一个节点
struct List* deleteList(List* head, int num)
{
	struct List* p1, *p2;
	p1 = p2 = head;
	while (p1->next)
	{
		p2 = p1;
		p1 = p1->next;
		if (p1->num == num)
		{
			p2->next = p1->next;
			break;
		}
	}
	return head;
}

//删除尾巴节点
struct List* deleteTail(List* head)
{
	struct List* p1, *p2;
	p1 = p2 = head->next;
	while (p1->next)
	{
		p2 = p1;
		p1 = p1->next;
	}
	p2->next= NULL;
	return head;
}

//删除头节点
struct List* deleteHead(List* head)
{
	if (head->next)
	{
		head->next = head->next->next;
	}
	return head;
}


//遍历链表
void print(struct List* head)
{
	struct List* p;
	p = head->next;
	while (p != NULL)
	{
		printf("%d\n", p->num);
		p = p->next;
	}
}

int main()
{
	struct List* p;  //初始化一个链表
	p = creat();  //调用创建函数来创建一个链表
	deleteHead(p);
	print(p);
	printf("\n");
	p = addList(p, 1);  //从尾巴添加一个10
	p = addList(p, 2);  //从尾巴添加一个10
	p = addList(p, 3);  //从尾巴添加一个10
	p = addList(p, 4);  //从尾巴添加一个10
	p = addList(p, 5);  //从尾巴添加一个10
	p = addList(p, 6);  //从尾巴添加一个10
	p = addList(p, 7);  //从尾巴添加一个10
	p = addList(p, 8);  //从尾巴添加一个10
	p = addList(p, 9);  //从尾巴添加一个10
	p = addList(p, 10);  //从尾巴添加一个10
	print(p);
	printf("\n");
	p = deleteList(p, 3);   //删除元素为3的节点
	print(p);
	printf("\n");

	deleteTail(p);
	print(p);
	printf("\n");
	deleteHead(p);
	print(p);
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++链表 的相关文章

  • 使用Docker部署软件运行环境

    什么是docker xff1f Docker是基于Go语言进行开发实现 xff0c 一个开源的应用容器引擎 采用Linux内核的cgroup xff0c namespace xff0c 以及AUFS类的Union FS等技术 xff0c 对
  • 【控制control】四足机器人运动学、动力学模型

    系列文章目录 提示 xff1a 这里可以添加系列文章的所有文章的目录 xff0c 目录需要自己手动添加 TODO 写完再整理 文章目录 系列文章目录前言一 四足机器人实际模型的物理难点二 四足机器人运动学模型1 方法一 xff1a DH法建
  • 【项目解读】fast_planner工程解读

    系列文章目录 提示 xff1a 这里可以添加系列文章的所有文章的目录 xff0c 目录需要自己手动添加 TODO 写完再整理 文章目录 系列文章目录前言一 规划系统运行逻辑 业务部分 1 Fast planner node cpp 程序入口
  • IMU方向位姿估计

    系列文章目录 提示 xff1a 这里可以添加系列文章的所有文章的目录 xff0c 目录需要自己手动添加 TODO 写完再整理 文章目录 系列文章目录前言一 方法一 xff1a IMU方向位姿可以直接从IMU本身提供的专有算法中获得 xff0
  • 【autoware的仿真平台】

    系列文章目录 提示 xff1a 这里可以添加系列文章的所有文章的目录 xff0c 目录需要自己手动添加 TODO 写完再整理 文章目录 系列文章目录前言一 仿真的必要性及常见的仿真工具介绍二 gazebo仿真插件介绍及源码解析1 gazeb
  • 【机械臂、无人机规控篇】(8)机械臂轨迹规划、跟踪控制方向

    系列文章目录 提示 xff1a 这里可以添加系列文章的所有文章的目录 xff0c 目录需要自己手动添加 TODO 写完再整理 文章目录 系列文章目录前言一 机械臂的规划控制和无人的规划控制的异同点分析1 规划的异同分析2 控制的异同分析 二
  • 微信支付——支付签名验证失败的坑

    只讲几个微信支付开发中的签名问题 xff08 JAVA版的公众号支付 xff09 第一个是获取订单数据时生成 xff0c 然后通过这些数据生成预支付订单 xff08 通过 统一下单 方法取得 xff09 xff0c 微信官方返回一串xml数
  • c++的多重继承

    一 前言 每个类只继承一个父辈 xff0c 在现实世界中事情通常是这样的 xff0c 但是有一些类却代表两个类的合成 例如两用沙发 xff0c 它是一张床 xff0c 也是一个沙发 二 示例代码 xff0c 用作下面提出问题使用 span
  • 学习 STM32之九轴姿态传感器(BWT901CL)串口通信读取数据

    由于个人应用到3轴传感器 xff0c 所以买了直接买了一个9轴的 xff0c 用于学习STM32Core平台串口2连接维特智能串口Normal协议 xff0c 然后通过串口1直接打印数据 xff0c 接收传感器数据和与传感器进行通信 xff
  • 用遗传算法求解旅行商问题

    以下是用遗传算法解决旅行商问题的实验报告 1 问题描述 旅行商问题 xff08 Travelling Salesman Problem 简记TSP xff0c 亦称货郎担问题 xff1a 设有n个城市和距离矩阵D 61 dij xff0c
  • 学习LLC谐振变换电路的工作原理

    五 学习LLC谐振变换电路的工作原理 在具有电阻R 电感L和电容C元件的交流电路中 xff0c 电路两端的电压与其中电流相位一般是不同的 如果调节电路元件 xff08 L或C xff09 的参数或电源频率 xff0c 可以使它们相位相同 x
  • 关于电赛应该了解的事

    2021年1月31日 xff0c 全国大学生电子设计竞赛组委会向各赛区组委会 各有关高校下发 关于组织2021年全国大学生电子设计竞赛的通知 xff0c 正式启动2021年全国竞赛组织工作 电赛越来越近 xff0c 很多大一大二的同学还没有
  • stm32的基本学习路径---新手指南

    心得 xff1a 本人学习STM32的时候有一些跟风的因素 xff0c 自以为学的芯片越多就越厉害 61 61 其实 xff0c 学习嵌入式重要的是整体的工程思想和项目经验积累 xff0c 说到底这些芯片 xff0c 我感觉学习起来都差不多
  • 初学stm32建议的---实用开发板推荐

    STM32编程作为一项实操性很强的技能 xff0c 所以要多实操 初学的话 xff0c 我觉得书籍就暂时先不买吧 xff0c 先考虑入手一块STM32开发板 xff0c 然后跟着开发板的教程走 几年前 xff0c 做STM32的教程有很多家
  • 嵌入式操作系统-ucos是什么?

    一句话概括ucos系统 xff1a 一款源代码开放的 xff0c 抢占式多任务实时操作系统 其在整个嵌入式产品的架构中的角色和主要功能代码如下图所示 xff1a ucos 系统建立了用户程序和底层硬件之间沟通的渠道 通过ucos系统的管理和
  • 自学stm32,需要会到什么程度能找到一份工作?

    我是从大一就开始接触单片机 xff0c 学过很多类型的单片机 从最简单的51单片机 xff08 stc xff0c atmel intel等类型都用过 xff09 到国内现在最火的stm32 xff08 推荐正点原子 xff0c 后期很多项
  • 学习STM32的寄存器版本好还是库函数版本好

    我个人认为 xff0c 在回答这个问题之前 xff0c 你得先问清楚自己 xff0c 我学习stm32 或者再往更深的地方走 xff0c 我学习单片机 xff0c 究竟是为了什么 xff1f 你现在是处于什么状态 xff1f 你是学生还是已
  • proteus 8 打开proteus 7版本仿真文件的两个方法

    Proteus版本一直在更新 xff0c 其中常见的大版本Proteus 7 和Proteus 8兼容是有问题的 xff0c Proteus是向上兼容的 xff0c 高版本可以打开低版本的仿真 xff0c 低版本打不开高版本的 Proteu
  • stm32 单片机主要优点有哪些?

    51单片机之所以成为经典 xff0c 成为易上手的单片机主要有以下特点 xff1a 特性 xff1a 1 从内部的硬件到软件有一套完整的按位操作系统 xff0c 称作位处理器 xff0c 处理对象不是字或字节而是位 不但能对片内某些特殊功能
  • openmv入门之路

    如果你发现OpenCV函数繁多 xff01 xff01 xff01 如果你发现OpenCV配置繁琐 xff01 xff01 xff01 如果你发现自己买不起miniPC xff01 xff01 xff01 请选择OpenMV来完成你的项目吧

随机推荐

  • GMM(高斯混合模型)的动态背景分割

    以下是GMM xff08 高斯混合模型 xff09 的动态背景分割的实验报告以及源码 xff0c 另外用到了形态学操作与多通道的处理 xff0c 提升了实验结果的性能 一 实验名称 基于混合高斯模型的动态背景分割 二 实验目的 探索如何对W
  • OpenMv学习总结

    入门阶段 简单来说 xff0c OpenMv就是一个可编程的摄像头 xff0c 通过使用python语言 xff0c 专门用作嵌入式当中的视觉感光元件 下面将介绍Openmv使用过程中的常用知识 感光元件 感光元件即sensor模块 xff
  • 分享一下使用机智云APP控制战舰V3

    第一步 xff1a 注册机智云 xff0c 然后进入到开发者中心 xff0c 然后开始创建新产品 具体代码 xff0c 已经上传共享 设置好后点击保存 xff0c 这个时候会跳转到开发向导界面 xff0c 选择去添加数据点 我们建3个数据节
  • FreeRTOS进入函数prvStartFirstTask() 启动SVC后进入HardFault死循环

    FreeRTOS进入函数prvStartFirstTask 启动SVC后进入HardFault死循环 原因 xff1a 在初始化串口时为串口中断配置的NVIC与FreeRTOS的优先级设置冲突 解决方法 xff1a 设置USART的中断分组
  • docker修改默认存储路径

    docker修改默认存储路径 一 环境 xff1a centos7 x系统 xff0c 已经装好docker ce服务包 二 查看当前docker的存储路径 yukw 64 yfb docker info grep Dir WARNING
  • FreeRTOS变量和函数命名规则

    1 变量名 在 FreeRTOS 中 xff0c 定义变量的时候往往会把变量的类型当作前缀加在变量上 xff0c 这样的 好处是让用户一看到这个变量就知道该变量的类型 c char 型变量 s short 型变量 l long型变量 x p
  • Cannot Load Flash Programming Algorithm !错误解决方案,亲自验证过的几套方案

    当你下载程序的时候遇到Cannot Load Flash Programming Algorithm xff01 错误的时候是不是很崩溃 xff1f 按字面翻译的意思大概是编程算法不对 xff1b 一 这个问题我们一般先检查设备是否连接和编
  • 使用snprintf函数使用时注意事项

    snprintf函数 函数原型 xff1a int snprintf char str size t size const char format 简介 xff1a 将可变参数 按照format的格式格式化为字符串 xff0c 然后再将其拷
  • UCOSii中的信号量

    任务间简单通个信 xff0c A告诉B你LED亮一下 这种问题可以用信号量来处理 xff0c UCOSii中关于信号量的函数也就八个 xff0c 今天简单总结下 函数列表 CREATE A SEMAPHORE Description Thi
  • FreeRTOS中的变量,函数命名规则(u.v.x.p什么意思)

    写在前面 初学FreeRTOS时 xff0c 每次打开函数列表都一脸懵逼 xff1f 根本不知道这什么prv v ux是什么意思 xff0c 虽然平时使用也不需要知道这么多东西 xff0c 因为它不怎么影响开发 xff0c 但是理解总比疑惑
  • stm32学习之路---最小系统的介绍

    目标 xff1a stm32最小系统的了解 1 STM32最小系统组成 电源电路复位电路晶振电路下载电路 电源电路 xff1a DC IN1和POWER那是单片机的火牛接口它是5V的 xff0c 不能乱接不然会烧毁芯片 POWER1处是单片
  • 视频目标检测(video object detection)简单综述

    对目前看过的视频目标检测论文做一个简单的综述 xff0c 也欢迎大家补充一些其他遗漏掉的 xff0c 不错的视频目标检测论文 持续更新 github https github com breezelj video object detect
  • AAAI2021第一轮被拒经验分享

    AAAI第一轮悲剧了 俩5分 俩评委给的意见都挺中肯的 xff0c 主要还是创新性不过 xff0c 加基线算法比较不够 对实验结果解释不足 感觉他们对实验方法细节并没有很着重看 xff0c 更多的是宏观的评论 第一次投多少有点失望 xff0
  • C语言Sprintf用法

    如图 xff0c 两种简单用法 include lt iostream gt include lt stdio h gt 程序的主函数 int main char a 20 a 0 61 39 p 39 a 1 61 39 t 39 spr
  • UE4——打印函数

    输出当前类名 xff0c 注意是两个 GEngine gt AddOnScreenDebugMessage 0 30 f FColor Red FString FUNCTION 输出当前物体名 GEngine gt AddOnScreenD
  • vscode主题

    刚发现的 xff0c 代码效果比较好
  • VSCode 全局搜索正则排除不想显示的文件

    排除前 排除后 lst
  • 串口打印小数

    一般串口是打印一个8位字符 xff0c 或者打印一个数组 xff0c 如果要打印小数 xff0c 就要用到格式化输出 xff0c 把小数格式化输出到数组里面 u8 a 10 b 10 co2 61 1 001 tvoc 61 2 001 s
  • UE4——蓝图多重for循环

    1 示例 如下打印 xff0c 说明成功进行3次循环
  • C++链表

    上个简单链表 xff0c 写的有些难看 xff0c 现在更改一下 https liu endong blog csdn net article details 111934018 添加了删除尾结点 xff0c 添加了删除头结点 includ