链表CPP简单示例

链表创建
链表打印全部内容
获取链表长度
链表根据指定位置添加元素
链表根据指定位置删除元素

#include <iostream>
using namespace std;// 1、创建结构体// typedef 经常在结构中使用 typedef 别名
typedef struct node {int date;struct node* next;  // 必须要自己用自己,否则会陷入循环中
}Node;  // 结构类型别名// 2、创建链表 创建长度为n的链表Node* Nodeinit(int n) {// 创建 头节点Node* head = new Node;head->date = 0;head->next = NULL;// 创建 暂存节点Node* per = head;for (int i = 0; i < n; i++) {Node* p = new Node;  // 创建 一个节点p->next = NULL;      // 指向下一个点, 先设空p->date = 0;         // 赋值 0per->next = p;       // 将 暂存节点 链接起来 这样暂存节点的下一个就是新的暂存节点,进行循环per = p;             // 将里面的值也赋过去}return head;}// 3、查看链表所有数据
void NodeDisplay(Node *tou) {Node* p = tou->next;while (p != NULL) {std::cout << p->date << " -> ";p = p->next;}std::cout << "NULL" << std::endl;
}// 4、获取链表长度
int Nodelen(Node *node) {Node* p = node->next;int i = 0;while (p != NULL) {p = p->next;i++;}std::cout << "链表长度:" << i << std::endl;return i;}// 指定位置插入(替换)链表数据 (头节点、插入位置、插入数据)
void NodeInsert(Node* head, int index, int date) {int n = Nodelen(head);  // 链表长度// 超出范围则报错if (index < 0 || index > n) {throw "index error"; //如果插入位置超出链表长度抛出异常//std::cout << "插入位置有误:"<< index << std::endl;}//临时存放节点Node* per = head;for (int i = 0; i < index; i++){// 循环next到index位置per = per->next;}Node* Node1 = new Node;// 新节点 输入数据Node1->date = date;// 新节点指向 要使用 原节点的指向Node1->next = per->next;// 原节点指向新节点 per->next = Node1;std::cout << "插入成功:" << index << std::endl;
}// 指定位置删除链表中的元素void delNode(Node* head, int index) {int n = Nodelen(head);  // 链表长度// 超出范围则报错if (index < 0 || index > n) {throw "index error"; //如果插入位置超出链表长度抛出异常//std::cout << "插入位置有误:"<< index << std::endl;}//临时存放节点Node* per = head;for (int i = 0; i < index; i++) {per->next;}// 将要删除的节点拿出来Node* p = per->next;// 接入下下个节点per->next = per->next->next;std::cout << "删除成功, 位置:" << index << std::endl;// 删除拿出来的节点delete p;
}
// 查链表是否存在某元素// 删除链表指定元素// 演示
int main(int argc, char** argv) {// 初始化 链表Node* MainHead = Nodeinit(5);// 打印链表NodeDisplay(MainHead);// 获取链表长度Nodelen(MainHead);// 插入替换某节点(链表首地址, 链表位置, 插入内容)NodeInsert(MainHead, 3, 1);// 打印链表NodeDisplay(MainHead);// 删除指定位置的链表元素delNode(MainHead, 4);// 打印链表NodeDisplay(MainHead);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/12594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 微信小程序使用ec-canvas图表

微信小程序中使用到了ec-canvas图表&#xff0c;从DCloud插件市场中下载echarts-for-wx&#xff1b; 在uniapp项目中找到js-sdk文件夹&#xff0c;把其中的uni-ec-canvas放到要用的包的components中。 在文件中导入&#xff1a; 饼图&#xff1a; <template><view…

STM32入门_江协科技_5~6_OB记录的自学笔记_GPIO输出_LED流水灯_蜂鸣器

5. GPIO 输出 5.1. GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口可配置为8种输入输出模式引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V&#xff08;端口输入5V的电压&#xff0c;之前引脚定义表格中带FT标识的&#xff09…

计算思维的理解

2006年&#xff0c;卡内基梅隆大学周以真教授首次系统性地定义了计算思维。这一年&#xff0c;她在美国计算机权威期刊《Communications of the ACM》上发表了题为《Computational Thinking》的论文&#xff0c;由此开启了计算思维大众化的全新历程。 周以真&#xff08;Jeanne…

Android ndk获取手机内部存储卡的根目录方法

如下所示&#xff1a; 代码语言&#xff1a;javascript jclass envcls env- FindClass("android/os/Environment"); //获得类引用if (envcls nullptr) return 0;//找到对应的类&#xff0c;该类是静态的返回值是FilejmethodID id env- GetStaticMethodID(envcls,…

Windows / Linux 查看计算机支持的最大内存

该操作一般用不到&#xff0c;主要用于给计算机扩展内存用。 一、Windows 系统 以管理员身份运行 cmd 1、查看主板最大支持内存容量 wmic memphysical get maxcapacity /format:value将返回值值是以KB为单位的&#xff0c;除以 1024&#xff0c;再除以 1024&#xff0c;即…

矩阵的特征分解

参考资料&#xff1a;矩阵的特征分解

数据源网站分享

1. 国家统计局&#xff1a; http://www.stats.gov.cn/提供国家宏观经济数据 2. 工业和信息化部&#xff1a; http://www.miit.gov.cn 发布工业运行及信息化相关数据 3. 中国人民银行&#xff1a; http://www.pbc.gov.cn/ 提供金融市场政策及运行相关数据 4. 国家金融监督…

单调栈练习

最大矩形面积 如果栈为空&#xff0c;或者新的元素是大于栈顶元素的&#xff0c;那么新来的元素不会破坏栈的单调性&#xff0c;那么就把这个柱子入栈。 特别注意&#xff1a;这里的s.empty()和s.top().height < a不能调换顺序&#xff0c;包括后面的判断也要先判断栈是否为…

【Qt问题】windeployqt如何提取Qt依赖库

往期回顾 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式-CSDN博客 【Qt问题】windeployqt如何提取Qt依赖库 考虑这个问题主要是&#xff1a;当我们的程序运行好之后&#…

【现代C++】范围库的应用

C20引入了范围库&#xff08;Ranges library&#xff09;&#xff0c;它是标准模板库&#xff08;STL&#xff09;的一个扩展&#xff0c;提供了一种新的方式来处理序列和范围。这个库允许开发者以更声明式的方式编写代码&#xff0c;使得操作序列变得更简洁、更易读。以下是C范…

HTML静态网页成品作业(HTML+CSS)——动漫喜羊羊网页设计制作(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有4个页面。 二、作品演示 三、代…

51 单片机[2-2]:LED闪烁

摘要&#xff1a; 本文使用STC89C52RC单片机实现单个LED闪烁 新建一个项目&#xff0c;具体步骤见[2-1] 分析&#xff1a; 要使 LED 闪烁&#xff08;以D1为例&#xff09;&#xff0c;就要先让 P2 0xfe; 再让 P2 0xff; 先在keil5中把程序写成这样&#xff1a; #include &…

代码随想录——在每个树行中找最大值(Leetcode515)

题目链接 层序遍历 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) …

二叉树找数左下角值

题目很容易理解&#xff1a;就是找二叉树左下角的值 思路&#xff1a;肯定是使用递归的方法&#xff0c;并且实现的效果是&#xff0c;先到最左边&#xff0c;然后当为叶子结点的时候比较一下当前是否为最大深度&#xff0c;如果是更新最大深度&#xff0c;并且修改结果。如果…

风电功率预测 | 基于BP神经网络的风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测 | 基于BP神经网络的风电功率预测(附matlab完整源码)完整代码风电功率预测 | 基于BP神经网络的风电功率预测(附matlab完整源码) 基于BP神经网络的风电功率预测是一种常见的方法,它利用BP神经网络模型来预测风电场的发电功率。下面是一个基于BP神经…

SEO之为什么研究关键词(二)

初创企业需要建站的朋友看这篇文章&#xff0c;谢谢支持&#xff1a; 我给不会敲代码又想搭建网站的人建议 新手上云 &#xff08;续上一篇。。。。。&#xff09; 3、寻找有效流量 排名和流量都不是目的&#xff0c;有效流量带来的转化才是目的。就算公司有足够的实力将一些…

010.理解异步性

异步消息传递是响应式系统的一个关键特性。但到底是什么异步性&#xff0c;为什么它对响应式应用程序如此重要?我们的人生注定在许多异步任务中。你可能没有意识到&#xff0c;但你的日常活动如果它们本质上不是异步的&#xff0c;那就太烦人了。要理解什么是异步&#xff0c;…

Python程序性能优化:策略与工具深度解析

Python程序性能优化&#xff1a;策略与工具深度解析 一、引言 Python作为一种高级编程语言&#xff0c;因其简洁的语法和强大的功能库而深受开发者的喜爱。然而&#xff0c;Python在性能上常常被诟病为“慢慢的”语言。但在实际应用中&#xff0c;通过一系列的性能优化策略和…

Burp Suite Professional 2024.4 (macOS, Linux, Windows) - Web 应用安全、测试和扫描

Burp Suite Professional 2024.4 (macOS, Linux, Windows) - Web 应用安全、测试和扫描 Burp Suite Professional, Test, find, and exploit vulnerabilities. 请访问原文链接&#xff1a;Burp Suite Professional 2024.4 (macOS, Linux, Windows) - Web 应用安全、测试和扫描…

云动态摘要 2024-05-15

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]即刻畅享自研SaaS产品 腾讯云 2024-04-25 涵盖办公协同、营销拓客、上云安全保障、数据分析处理等多场景 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用…