C++实现单向链表

单向链表的反转(c++实现) 目录前言单向链表的反转实现代码总结 前言 本篇文章接着前文单链表的插入、删除(c++实现)实现链表的反转,主要也即是在前文的基础上完成了一个InvertList()函数。 单向链表的反转 通过前面两篇文章的学习,已经对于链表的操作有一定掌握,而反转的实现就是一点小技巧,需要用到三个指针变量,类似于两个数交换的思想,层次递进。 现在假设定义pre、phead、temp三个指针变量,用phead指向链... 阅读详情
****************************IntSLList.h*****************************/
#ifndef _INTSLLIST_H_
#define _INTSLLIST_H_


class IntSLLNode{
public:
        IntSLLNode(){next = 0;}
        IntSLLNode(int el, IntSLLNode *ptr = 0){
                info = el; next = ptr;
        }
        int info;
        IntSLLNode *next;
};

class IntSLList{
public:
        IntSLList(){head = tail = 0;} 
        ~IntSLList();
        int isEmpty(){return head == 0;} 
        
        void addToHead(int);
        void addToTail(int);

        void deleteNode(int);
        bool isInList(int)const;
        void print()const;
private:
        IntSLLNode *head,*tail;
};

#endif
/**************************IntSLList.cpp****************************/
#include "IntSLList.h"
#include <iostream>

IntSLList::~IntSLList()
{
        for(IntSLLNode *p; !isEmpty();){     
                p = head->next;
                delete head;
                head = p;
        }
}

void IntSLList::addToHead(int el) 
{
        head = new IntSLLNode(el);
        if(0 == tail)
                tail = head;
}

void IntSLList::addToTail(int el) 
{
        if(tail != 0){ 
                tail->next = new IntSLLNode(el);
                tail = tail->next;
        }
        else{
                head = tail = new IntSLLNode(el);
        }
}

int IntSLList::deleteFromHead()
{
        int el = head->info;
        IntSLLNode *tmp = head;
        if(head == tail)
                head = tail = 0;
        else
                head = head->next;
        delete tmp;
        return el;
}

int IntSLList::deleteFromTail()
{
        int el = tail->info;
        if(head == tail){
                delete head;
                head = tail = 0;
        }
        else{
                IntSLLNode *tmp;
                for(tmp = head; tmp->next != tail; tmp = tmp->next);
                delete tail;
                tail = tmp;
                tmp->next = 0;
        }
        return el;
}

void IntSLList::deleteNode(int el)
{
        if(head != 0)
                if(el == head->info && head == tail){
                        delete head;
                        head = tail = 0;
                }
                else if(el == head->info){
                        IntSLLNode *tmp;
                        head = head->next;
                        delete tmp;
                }
                else{
                        IntSLLNode *pred,*tmp;
                        for(pred = head, tmp = head->next;
                            tmp !=0 && !(tmp->info == el);
                            pred = pred->next, tmp = tmp->next);
                        if(tmp != 0){
                                pred->next = tmp->next;
                                if(tmp == tail)
                                        tail = pred;
                                delete tmp;
                        }
                }
}

bool IntSLList::isInList(int el)const
{
        IntSLLNode *tmp;
        for(tmp = head; tmp !=0 && tmp->info != el; tmp = tmp->next);
        return tmp != 0;
}

void IntSLList::print()const
{
        IntSLLNode *tmp;
        for(tmp = head; tmp != 0; tmp = tmp->next){
                std::cout << tmp->info << ' ';
        }
        std::cout << std::endl;
}



单向链表的插入、删除(c++实现) 目录前言单向链表插入节点实现代码单向链表删除节点实现代码整个项目的完整代码运行截图总结 前言 本篇文章主要接着上文的c++实现单向链表进一步实现单向链表的插入、删除。 单向链表插入节点 在单向链表中插入新节点犹如给一列火车加入新的车厢,而根据新节点插入位置的不同,分为三种不同的插入处理方式具体分析如下: 1.当在链表头部插入节点,只需把新节点的指针指向链表原来的第一个节点,再把链表头指针指向新节点... 阅读详情

相关推荐

C++实现线性表 - 02 单向链表

数据结构与算法C++代码实现之线性表单向链表部分

Newin2020的博客 4399

c++实现单向链表

简单记录链表知识点,详细实现单向链表及其尾插,删除,排序等功能

qq_43575504的博客 2759

C++:单向链表实现

C++:16.03.11 实验课总结标签: C++by 小威威概况: 本次实验课的代码题难度较大(对于刚刚入门C++的人来说),对于解答者有一定的要求:1.了解链表的基本操作;2.对于浅复制与深复制有一定的了解并能加以区分;3.要有较强的gdb调试能力。(没有对程序进行调试一般情况下是得不到满分的,不排除你是超级大大神,第一次就写出了没有内存泄漏的代码)这道题涉及到的知识点: 复制构造函数中的深

linwh8的博客 2971

c++数据结构—单向链表

由两部分组成:数据域和指针域,每个结点都有一个指针,每个节点指针的指向都是指向自身结点的下一个结点,最后一个结点的head指向为NULL,对单链表的操作只能从一端开始,如果需要查找链表中的某一个结点,则需要从头开始进行遍历。

qq_67972375的博客 2272

用C++实现单向链表

通过addNode方法可以添加新节点,通过findNode方法可以查找特定的节点,而通过deleteNode方法可以删除节点。接下来,我们定义一个LinkedList类,用于表示整个单向链表。head指向链表的第一个节点,而tail指向链表的最后一个节点。值得注意的是,在实现链表时需要小心内存泄漏的问题,即需要确保每个节点都正确地被删除。总结起来,C++中的单向链表实现起来并不复杂,但需要仔细处理各种边界情况,以确保程序的正确性和稳定性。首先,我们定义一个Node类,用于表示链表中的节点。

qq_37934722的博客 351

C/C++实现单向链表

分别用C和C++实现了单向链表(创建链表,插入数据、获取指定位置的数据、删除指定位置的数据...),如果在使用中觉得api不够用可以进行扩展;其中包含测试。

单向链表及单向循环链表的实现 C++

在链表中,我们只需要通过一个头节点就可以遍历到整个链表,并对其某一位置进行增删操作。

2301_81148787的博客 1144

用化学方法nmp溶剂从佳能cmos传感器上剥离拜耳矩阵和微透镜

将光刻胶暴露于 NMP 溶剂中 10-15 分钟,并进行轻微的机械搅拌,将溶解的光刻胶从基材表面带走,即可去除大部分光刻胶,之后再进行第二次溶剂浴,以洗去微量含有光刻胶的溶剂。我还担心传感器的校准问题,我觉得可以大致解决这个问题,比如在安装面上用刻度尺标记三个螺丝的位置,然后数着拧出螺丝的圈数,直到听到“咔哒”声(螺纹完全拧出)。我还担心传感器的校准问题,我觉得可以大致解决这个问题,比如在安装面上用刻度尺标记三个螺丝的位置,然后数着拧出螺丝的圈数,直到听到“咔哒”声(螺纹完全拧出)。在我看来,这是必读的;

qq_40247880的博客 1476

单向链表的c++实现

******************************************************************** * File Name    : example1.h  example1.cpp                                                   * * Created      : 2012.5.25

3375

深入解析Xilinx IDELAYE2在FPGA时序优化中的关键作用与实战配置

本文深入解析了Xilinx FPGA中IDELAYE2模块在时序优化中的关键作用。作为精密的信号延时微调器,IDELAYE2通过可编程的抽头延迟,有效解决高速接口中数据与时钟的相位偏差问题。文章详细阐述了其必须与IDELAYCTRL配对使用的核心机制,并对比分析了FIXED、VARIABLE和VAR_LOAD三种工作模式的实战配置方法与代码示例,为FPGA工程师提供了解决时序收敛难题的关键硬件配置指南。

pear55的博客 1184

debian linux系统安装教程,Debian 10(Buster)安装过程图文详解

Debian 项目发布了它的最新稳定版 Debian 10,其代号是 “Buster”,这个发布版将获得 5 年的支持。Debian 10 可用于 32 位和 64 位系统。这个发布版带来很多新的特色,列出下面一些特色:引入新的 Debian 10 的主题 “FuturePrototype”新版本的电脑桌面环境 GNOME 3.30、Cinnamon 3.8、KDE Plasma 5.14、MAT...

weixin_39864601的博客 4985

单向链表c++实现

单向链表的结构 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。 设置节点类如下: class Node{ int item; Node* next; }; 其中节点指针next指向节点类型变量,从而实现链表的连接 设置链表类如下,包含一节点指针head class...

weixin_42355349的博客 960

360可视门铃双摄版数据恢复实战:BIN文件解析与视频重组

本文详细解析了360可视门铃双摄版BIN文件的数据恢复过程,包括文件结构分析、双摄像头数据存储机制及视频重组技术。通过Python开发环境和FFmpeg工具链,成功实现了H.265视频流的解析与重组,为智能家居设备数据恢复提供了实用解决方案。

weixin_29196891的博客 908

单向链表的C++实现

本文介绍了单向链表的基本实现原理和操作。链表通过动态分配节点解决了顺序表内存管理复杂的问题,支持高效插入(O(1))和删除操作,但查找效率较低(O(n))。文章详细讲解了链表节点定义、构造函数、析构函数,并重点分析了插入和删除操作的实现逻辑,包括头部/中间/尾部不同位置的分类处理。同时给出了查找、获取元素等基础操作的代码实现,最后指出了链表操作中需要注意的指针管理和边界条件处理问题。相比顺序表,链表更适合数据频繁变动的场景。

2401_86656334的博客 743

在 ABAP Cloud 中玩转 CL_ABAP_PARALLEL 并行处理:从原理到实战

ABAP并行处理框架CL_ABAP_PARALLEL解析 本文系统介绍了SAP ABAP环境中实现并行处理的CL_ABAP_PARALLEL框架。该框架通过封装异步RFC和对话进程,为开发者提供了面向对象的API,显著提升大批量数据处理的效率。 文章首先分析了ABAP环境需要并行处理的原因:传统的串行处理在面对百万级数据时效率低下。然后详细介绍了CL_ABAP_PARALLEL的设计思路,它是一个"小型线程池"式的同步并行框架,适用于批量计算场景。此外,文章重点讲解了控制并行任务的关键参

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 341

产品缺陷检测:表面缺陷检测_(1).产品缺陷检测基础理论

确定像素之间的相似性准则,如灰度值的差异。

zhubeibei168的博客 832

单向链表、双向链表的C++实现

前言 本文主要记录数据结构中的单向链表、双向链表C++实现以及要点等。 代码 原理就不说了,基础中的基础。直接上代码: 首先是CNode.h文件: #ifndef _NODE_H__ #define _NODE_H__ class CNode{ private: int data; CNode *nextNode; public: CNode(); void setData(int iD...

Hikers、Wan的博客 599

2023年美高赛HiMCM:A题蒲公英 思路

蒲公英,通常称为蒲公英,是一种原产于欧亚大陆的植物,现在在世界各地都可以找到[1]。这种植物很容易通过其亮黄色的花朵(图1)和独特的“马勃”种子头(图2)来识别。该头部的每颗种子都附着在一个类似降落伞的结构上,称为“冠毛”,有利于风的传播[2]。如果处于“马勃”阶段的单个蒲公英毗邻一块开阔的一公顷土地,请创建一个数学模型来预测蒲公英在 1、2、3、6 和 12个月内的传播情况。确保您的模型考虑了各种气候条件(例如温带、干旱和热带气候)对蒲公英生长的影响。2. 蒲 公英、人类和其他植物之间的关系很复杂。

斌擎科技 7403

(C++版)链表(一)——实现单向链表创建、插入、删除等相关操作

前段时间用C

菜鸟学C/C++ 3万+

智能预测性维护AI系统实战效率提升:AI应用架构师的技巧分享

在工业领域,预测性维护(Predictive Maintenance, PdM)是降低停机损失、优化维护成本的关键手段。然而,现有系统往往面临三大效率瓶颈数据处理延迟:工业设备产生的海量实时数据(如传感器、PLC)需传输至云端处理,导致预警滞后;模型推理效率:复杂深度学习模型(如ResNet、Transformer)在边缘设备上推理时间长,无法满足实时要求;落地集成困难:与企业现有ERP、MES、SCADA系统对接繁琐,导致“模型好用但业务不用”的尴尬。本文从架构、数据、模型、落地架构设计。

AI天才研究院 744

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C++模板实现的单向链表

C++模板实现的单向链表,实现了链表的初始化创建,元素插入,元素链表末尾添加,元素删除,链表清空 //Lists.h #ifndef DDXXLISTS_H #define DDXXLISTS_H #include using namespace std; template class Lists { public: Lists(); Lists(int nSize); ~Lists(

eskimoer的专栏 2706

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C++单向链表怎么实现 -数据结构

这篇文章我给大家介绍用C++语言实现单向链表其中的注释及讲解都在代码里

哈楼沃德-HelloWorld 的博客 354

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C++实现单向链表的反转(附带源码)

单向链表(Singly Linked List)是数据结构中的一种基本形式,它由一系列节点构成,每个节点包含数据和指向下一个节点的指针。在许多实际应用中,我们需要对单向链表进行操作,其中链表反转是一个常见的操作。链表反转的目标是将链表中节点的顺序反转,使原本尾部的节点成为头部,原本头部的节点成为尾部。

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 895

link list 单向链表及常用方法实现 | cpp

链表一般有三种,一种是单向链表,每个结点只知道下家是谁;一种是双向链表,每个结点知道自己的上下家;一种是循环链表,类似魔比斯环,可以从头走到头(还有一种是双向+循环)。 差异在于增删操作的便捷性,以及增删后需要修改的内容(越方便操作的,需要修改的内容越多)。 这里暂时只介绍单向链表 node 用来描述链表中数据的基本单元 Data Structure 初始化设置 next 为 nullptr // struct all public struct node { int data; node

J Hunter's Blog 1123

c++ 链表_C/C++简单的实现一个单向链表

我们都知道,数据结构在编程领域是一门十分重要的知识,因为程序说白了就是数据的运算,那么数据运算时建立在数据存储的基础上的。虽然现在的高级语言在日常开发中可能用不到数据结构,因为语言本身给大家提供了丰富的数据存储类型,比如说C#的List、Array、Dictionary、Queue等,又比如C++的STL,但是这并不代表我们就不需要去学习数据结构了,如果后续你需呀做到架构师,这门知识是不可或缺的。...

weixin_39778668的博客 558
上一篇: 深入理解字符串指针和字符串数组
下一篇: 实现单向链表节点删除
FreeeLinux
博客等级 码龄11年 421粉丝 356原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值