C++ 链表

线性表(顺序表)有两种存储方式:链式存储和顺式存储,顺式存储如数组,其内存连续分配,且是静态分配。链式存储,内存是不连续的,且是动态分配。前一个元素存储数据,后一个元素存储指向下一个节点的指针。

如图所示为单向链表。

链表结构:

typedef LinkNode
{int m_nValue;      //节点中存储的值LinkNode* m_pNext; //节点存储的指针,指向链表的下一个节点
};

在链表的结尾处加入一个节点(注意第一个参数,定义了一个指向指针的指针,因为当我们建立一个新的链表时,首节点的第一个元素就是头指针)。

void AddToTail(ListNode**pHead,int value)
{//首先创建这个要插入的节点,节点需要包括数据和指向空的指针(在节点末尾处指针为nullptr)LinkNode* pNew;pNew->m_nValue=value;pNew->m_pNext=nullptr;//然后判断该链表的首节点是否为空if(*pHead->m_pNext==nullptr)  //若首节点没有下一个指向,则表示首节点即为尾节点,将首节点的下 //一个指针指向新建的节点。*pHead=pNew;else{LinkNode* pNode=*pHead;           //如果首节点不为空,则往下找到尾节点,尾节点的指while(pNode->m_pNext!=nullptr)    //针为nullptr,将尾结点的指针指向pNext。{pNode=pNode->m_pNext;}   pNode->m_pNext=pNext;          }}

删除链表中存储某个值的节点

void RemoveNode(LinkNode**pHead,int value)
{//首先判断首节点是否为空if(*pHead=nullptr||pHead=nullptr)return;LinkNode*pToBeDelete=nullptr;//判断首节点是否为要删除的元素if((*pHead)->m_nValue==value){pToBeDelete=*pHead;            *pHead=(*pHead)->m_pNext;}else{LinkNode *pNode=*pHead;while(pNode->m_pNext!=nullptr&&pNode->m_nValue!=value)pNode->m_Next=pNode->m_pNext-> ;if(pNode->m_pNext!=nullptr&&pNode->m_nValue==value){pToBeDeleted=pNode->m_pNext;pNode->m_Next=pNode->m_pNext->m_pNext;}}if(pToBeDeleted!=nullptr){delete pToBeDeleted;pToBeDeleted=nullptr;}}

 

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

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

相关文章

波拉契尔数列 C++

题目:写一个函数,输入n, 求斐波那契数列的第n项。 分析:该题有两种实现方式递归或循环。当n比较大的时候f(n)结果也会比较大,故定义的时候可以采用long(int 也行)。递归会有大量的重复计算,而循环可以把f(n-1)和f(n-2)…

Deepin 下 使用 Rider 开发 .NET Core

国产的 Deepin 不错,安利一下。Deepin 用了也有一两年,也只是玩玩,没用在开发上面。后来 Win10 不太清真了,就想着能不能到 Deepin下撸码。要搞开发,首先少不了 IDE,VS2019 用不来,Vs Code 太复…

求旋转数组的最小数字C++

发现还是数组这种最简单的编码才适合我,遇到树,链表这些真的是一头雾水,自己也不知道怎么实现。言归正传,该篇文章介绍如何求旋转数组的最小值,求最大值可以适当改编即可。 什么是旋转数组呢,就是将一个数…

[视频演示].NET Core开发的iNeuOS物联网平台,实现从设备PLC、云平台、移动APP数据链路闭环...

此次我们团队人员对iNeuOS进行了全面升级,主要升级内容包括:(1) 设备容器增加设备驱动,包括:西门子(S7-200smart、S7-300、S7-400、S7-1200、S7-1500)、三菱(FxSerial…

707 设计单链表

第一次完成这样的设计,一路磕磕碰碰,遇到了许多问题,最后终于一一解决了。感恩https://blog.csdn.net/lym940928/article/details/81276658 题目如下: 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两…

选择开源项目什么最重要?

开发人员在决定是否使用某个开源项目时考虑到的最重要事项是什么?代码质量?安全性?好的文档?上述因素都很重要,但根据 Tidelift 和 The New Stack 的联合调查,控制着开源项目的开源许可证才是最需要考量的因…

leetcode 二进制求和 addBinary

题目描述: 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入: a "11", b "1" 输出: "100" 示例 2: 输入: a "1010", b…

居然不知道和的区别?

前言那年刚找工作那会,就碰到过这么一个简单的题目“&和&&的区别” 那时知识面窄,大概也就知道1.都是作为逻辑与的运算符。2.&&具有短路功能,计算出前者false,就不需计算后者的true or false。后来在微信群里…

两数之和,输入有序数组 leetcode C++

给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。你可以假设每…

【DevOps进行时】自动化测试之单元测试

在DevOps建设中,主流的测试分层体系可以分为单元测试、接口测试和界面测试。Google曾提出一个经验法则:70%的小型测试,20%的中型测试,10%大型测试。当然,这个比例不是确定的,不同类型的项目,测试…

反转字符串中的单词 III leetcode

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例 1: 输入: "Lets take LeetCode contest" 输出: "steL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单…

Zongsoft.Data 发布公告

很高兴我们的 ORM 数据访问框架(Zongsoft.Data)在历经两个 SaaS 产品的应用之后,今天正式宣布对外推广。它是一个类 GraphQL 风格的 ORM(Object/Relational Mapping) 数据访问框架。又一个轮子?在很长时间里,.NET 阵营似乎一直缺乏一个被普遍…

leetcode 旋转数组

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1:输入: [1,2,3,4,5,6,7] 和 k 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4] 示例 2…

使用 .NET Core模板引擎创建自定义的模板和项目

本文要点.NET CLI 包含了一个模板引擎,它可以直接利用命令行创建新项目和项目项。这就是“dotnet new”命令。默认模板集涵盖了默认控制台和基于 ASP.NET 的应用程序以及测试项目所需的基本项目和文件类型。自定义模板可以创建更加有趣或定制化的项目和项目项&#…

leetcode 岛屿的个数

给定一个由 1(陆地)和 0(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010…

.NET Core前后端分离快速开发框架(Core.3.0+AntdVue)

时间真快,转眼今年又要过去了。回想今年,依次开源发布了Colder.Fx.Net.AdminLTE(254Star)、Colder.Fx.Core.AdminLTE(335Star)、DotNettySocket(82Star)、IdHelper(47Star),这些框架及组件都是本着以实际出发,实事求是的态度&…

leetcode 两数相加

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 输入:(2 -> 4 -> 3) (5 ->…

.Net开发3年,应聘大厂惨遭淘汰,如何翻身打脸面试官?

(设计师忘记了,这里还有个双十一福利课,还能1元秒杀!)

leetcode 无重复字符的最长子串

给定一个字符串,找出不含有重复字符的最长子串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。示例 2: 输入: "bbbbb" 输出: 1 解释: 无重复字符的最长子串是 "b&q…