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

链表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;
}

相关文章:

链表CPP简单示例

链表创建 链表打印全部内容 获取链表长度 链表根据指定位置添加元素 链表根据指定位置删除元素 #include <iostream> using namespace std;// 1、创建结构体// typedef 经常在结构中使用 typedef 别名 typedef struct node {int date;struct node* next; // 必须要自己…...

智能EDM邮件群发工具哪个好?

企业之间的竞争日益激烈&#xff0c;如何高效、精准地触达目标客户&#xff0c;成为每个市场战略家必须面对的挑战。在此背景下&#xff0c;云衔科技凭借其前沿的AI技术和深厚的行业洞察&#xff0c;匠心推出了全方位一站式智能EDM邮件营销服务平台&#xff0c;重新定义了邮件营…...

低代码与AI技术发展:开启数字化新时代

随着数字化转型的深入推进&#xff0c;低代码和AI技术逐渐成为各行各业关注的焦点。这两种技术的发展不仅改变了传统开发模式&#xff0c;还为企业创新和产业升级提供了新契机。本文将探讨这两种技术在实际应用中的相互促进作用&#xff0c;以及它们为我国经济社会发展带来的机…...

风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码)完整代码风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码) 基于遗传算法优化BP神经网络是一种常见的方法,用于改进BP神经网络在风电功率预测中的性…...

uni-segmented-control插件使用

dcloud插件市场 前端/uniapp 1.HBuildX打开目标项目 2.进入dcloud插件市场下载目标插件 3.看到如下提示(已经可以在目标项目中使用插件啦) 4.项目正式使用...

被动防护不如主动出击

自网络的诞生以来&#xff0c;攻击威胁事件不断涌现&#xff0c;网络攻防对抗已然成为信息时代背景下的一场无硝烟的战争。然而&#xff0c;传统的网络防御技术&#xff0c;如防火墙和入侵检测技术&#xff0c;往往局限于一种被动的敌暗我明的防御模式&#xff0c;面对攻击者无…...

ollama离线部署llama3(window系统)

首先介绍下ollama是什么&#xff1f;Ollama是一个开源的大型语言模型服务工具&#xff0c;旨在为用户提供本地化的运行环境&#xff0c;满足个性化的需求。具体来说&#xff0c;Ollama是一个功能强大的开源框架&#xff0c;可以简化在Docker容器中部署和管理大型语言模型&a…...

基于Django实现的(bert)深度学习文本相似度检测系统设计

基于Django实现的&#xff08;bert&#xff09;深度学习文本相似度检测系统设计 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 登录页面 注册页面&#xff1a;用户账号&#xff0c;密码…...

数据中心网络随想-电路交换

数据中心网络扩容并不容易&#xff0c;涉及设备上架&#xff0c;切换等又硬又大的动作&#xff0c;期间对所有应用都会产生影响&#xff0c;所以理论上 “加钱加硬件” 这种看起来很简单的事实际上真不如 “写一个随时部署升级的端到端拥塞控制算法” 更容易实施。 傍晚绕小区…...

并行执行线程资源管理方式——《OceanBase 并行执行》系列 3

在某些特定场景下&#xff0c;由于需要等待线程资源&#xff0c;并行查询会遇到排队等待的情况。本篇博客将介绍如何管理并行执行线程资源&#xff0c;以解决这种问题。 《OceanBase并行执行》系列的内容分为七篇博客&#xff0c;本篇是其中的第三篇。 一并行执行概念二如何手…...

数据库系统概论(个人笔记)(第二部分)

数据库系统概论&#xff08;个人笔记&#xff09; 文章目录 数据库系统概论&#xff08;个人笔记&#xff09;2、关系模型简介2.1 关系数据库的结构2.2 数据库模式2.3 键2.4 模式图2.5 关系查询语言2.6 关系代数 2、关系模型简介 2.1 关系数据库的结构 Structure of Relational…...

WebView基础知识以及Androidx-WebKit的使用

文章目录 摘要WebView基础一、启动调整模式二、WebChromeClient三、WebViewClient四、WebSettings五、WebView和Native交互 Androidx-WebKit一、启动安全浏览服务二、设置代理三、安全的 WebView 和 Native 通信支持四、文件传递五、深色主题的支持六、JavaScript and WebAssem…...

解锁AI写作新纪元的文心一言指令

解锁AI写作新纪元的文心一言指令 在人工智能&#xff08;AI&#xff09;飞速发展的今天&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术取得了显著的进步。文心一言&#xff0c;作为NLP领域的一颗璀璨明星&#xff0c;以其强大的文本生成和指令理解能力&#xff0c;为…...

前端学习——工具的使用

文章目录 1. 引入一个组件需要什么步骤2. 监听变量的修改3. async与await实现异步调用4. position: relative5. 定时执行方法 1. 引入一个组件需要什么步骤 引入一个组件&#xff0c;一定不要加{} &#xff08;对&#xff09;import editForm from “./component/editForm”; …...

图的拓扑序列(BFS_如果节点带着入度信息)

way&#xff1a;找入度为0的节点删除&#xff0c;减少其他节点的入度&#xff0c;继续找入度为0的节点&#xff0c;直到删除完所有的图节点。&#xff08;遍历node的neighbors就能得到neighbors的入度信息&#xff09; #include<iostream> #include<vector> #incl…...

Linux常用指令集合

ls显示目录文件 选项&#xff1a; -a 所有文件&#xff08;all所有&#xff09; -l 详细信息&#xff08;Information信息&#xff09;&#xff08;自动包含-1&#xff09; 所以常用 ll -1 一行只输出一个文件。 -R 列出所有子目录下的文件。…...

前端 JS 经典:为什么需要模块化

首先&#xff0c;自我评定一下&#xff0c;一个 js 文件&#xff0c;各位兄弟&#xff0c;最多能掌控多少行&#xff0c;什么意思呢&#xff0c;就是说&#xff0c;一个 js 文件在多少行之内&#xff0c;你是可以清楚的知道这个 JS 实现了哪些业务逻辑&#xff0c;并对这些业务…...

MySQL:某字段追加随机数

在MySQL中&#xff0c;你可以使用UPDATE语句结合随机函数RAND()来为某个字段追加随机数。以下是一个示例&#xff0c;假设我们有一个表my_table&#xff0c;其中有一个字段my_field&#xff0c;我们想要为这个字段追加一个介于1到100之间的随机数&#xff1a; UPDATE my_table…...

研发管理-选择研发管理系统-研发管理系统哪个好

选择研发管理系统-研发管理系统哪个好 选择研发管理系统时&#xff0c;并没有一个绝对的“最好”的系统&#xff0c;因为每个企业的需求和情况都是独特的。然而&#xff0c;我可以向您介绍一些在市场上广受欢迎且功能强大的研发管理系统&#xff0c;供您参考&#xff1a; 1、彩…...

学校NTP时钟系统(时间同步系统)方案助力建设智慧校园

学校NTP时钟系统&#xff08;时间同步系统&#xff09;方案助力建设智慧校园 学校NTP时钟系统&#xff08;时间同步系统&#xff09;方案助力建设智慧校园 建设智慧校园也意味着校内网络设备和服务器剧增&#xff0c;如何保障智慧校园内各数字系统时序一致、维稳运行成为一大难…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...