[数据结构]链表的基本操作

链表(LinkList)数据结构的基本操作实现详解,纯干货 目录一、前言二、整体设计框架三、函数实现1. createLSTNode2. linkListPushBack4. linkListPrint5. linkListDestory6. linkListSize7. linkListEmpty8. linkListPushFront9. linkListPopBack10. linkListPopFront11. linkListNodeFind12. linkListInsert13. linkListErase四、完整代码 一、前言 本篇主要实现链表的一些 阅读详情

链表


可以用任意一组存储单元来存储单链表中数据元素(存储单元可以是不连续的),而且,除了存储每个数据元素ai的值以外,还必须存储指示其直接后继元素的信息。这两部分信息组成的数据元素ai的存储映像称为结点。N个结点链在一起被称为链表,当结点只包含其后继结点的信息的链表就被称为单链表。

链表定义如下数据类来存储结点信息:

public class Node {

    Node next = null;
    int data;
    public Node(int data){
        this.data = data;
    }
}
/**
 * 链表的基本操作
 * @author dream
 *
 */
public class MyLinkeList {

    Node head = null;   //链表头的引用

    /**
     * 向链表中插入数据
     * @param d:插入数据的内容
     */
    public void addNode(int d){
        Node newNode = new Node(d); 
        if(head == null){
            head = newNode;
            return;
        }
        Node tmp = head;
        while (tmp.next != null) {
            tmp = tmp.next;
        }
        //add node to end
        tmp.next = newNode;
    }

    /**
     * 
     * @param index:删除第index个结点
     * @return:成功返回true,失败返回false
     */
    public Boolean deleteNode(int index){
        if(index < 1 || index > length()){
            return false;
        }
        //删除链表第一个元素
        if(index == 1){
            head = head.next;
            return true;
        }
        int i = 1;
        Node preNode = head;
        Node curNode = preNode.next;
        while (curNode != null) {
            if(i == index){
                preNode.next = curNode.next;
                return true;
            }
            preNode = curNode;
            curNode = preNode.next;
            i++;
        }
        return true;
    }


    /**
     * 
     * @return 返回结点的长度
     */
    public int length(){
        int length = 0;
        Node tmp = head;
        while (tmp != null) {
            length++;
            tmp = tmp.next;
        }
        return length;
    }

    /**
     * 对链表进行排序
     * @return  返回排序后的头结点
     */
    public Node orderList(){
        Node nextNode = null;
        int temp = 0;
        Node curNode = head;
        while (curNode.next != null) {
            nextNode = curNode.next;
            while (nextNode != null) {
                if(curNode.data > nextNode.data){
                    temp = curNode.data;
                    curNode.data = nextNode.data;
                    nextNode.data = temp;
                }
                nextNode = nextNode.next;
            }
            curNode = curNode.next;
        }
        return head;
    }

    /**
     * 打印结点值
     */
    public void printList(){
        Node tmp = head;
        while (tmp != null) {
            System.out.println(tmp.data);
            tmp = tmp.next;
        }
    }


    public static void main(String[] args) {
        MyLinkeList list = new MyLinkeList();
        list.addNode(5);
        list.addNode(3);
        list.addNode(1);
        list.addNode(3);
        System.out.println("listLen=" + list.length());
        System.out.println("before order:");
        list.printList();
        list.orderList();
        System.out.println("after order:");
        list.printList();
    }
}

Github源码地址:

https://github.com/GeniusVJR/Algorithm-and-Data-Structure/tree/master/LinkedList

数据结构单链表基本操作(C/C++实现) 数据结构-单链表-基本操作(C/C++实现) 注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据 涉及基本运算 初始化单链表 依次采用尾插法插入元素 输出单链表 输出单链表的长度 判断单链表是否为空 输出单链表的第n个元素 输出元素x的位置 在第n个元素位置上插入x元素 输出单链表 删除单链表的第n个元素 输出单链表 释放单链表 GitHub地址(包含.cpp文件和可执... 阅读详情

相关推荐

数据结构-栈操作-用链表实现栈基本操作

原文链接:https://www.goroutine.me/datastructure/2019/06/11/data-structure-stack-based-on-linkedlist-01.html 数据结构中的栈基本操作,我这里是也是为了学习记录我自己的书写的代码过程.其中包含取栈的新建,新增元素,删除元素,取指定索引值,向元素尾部追加元素 等等! 1、 场景 1.1、 中文描述 数据结...

Mreden的博客 5677

单链表的操作(超详细),保证你看完不后悔

编程实现单链表的以下基本操作:建立顺序表,修改顺序表,插入顺序表,删除顺序表。

princekin 4万+

单链表的十三个基本操作(全)

有关单链表的十三个基本操作,包括了 1、初始化单链表 2、插入 3、删除 4、查找 5、逆置 6、排序 7、删除指定数 8、指定交换顺序 9、求单链表长度 10、修改 11、最大值 12、按序插入 13、删除重复值

AIGC 7819

数据结构与算法 | 单链表的基本操作

线性表的存储结构有顺序存储结构(顺序表)和链式存储结构(链表)两种。顺序表在之前的博客有介绍过,不明白的朋友可查看:静态分配顺序表的基本操作及动态分配顺序表的基本操作。相对于顺序表来说,链表稍微难一些,本人花了两天的时间认真查看了一些资料,终于大致明白了一些东西。现在做一些总结,分享给大家,有错误的地方欢迎大家指正。 一、相关概念术语

嵌入式大杂烩 4万+

4D毫米波雷达

详解4D成像毫米波雷达

sangba2019的博客 2391

结构方程模型amos的操作与应用pdf_AMOS结构方程进行医学问卷量表分析教程(一阶简单路径效应分析)...

在生物医药的数据统计分析中,要研究量表和量表之间的关系时候,由于维度题项较多,而不再是单一的变量,因此我们要使用AMOS结构方程进行处理。​ 举个例子,比如对住院患者的相关研究,设置了患者在住院期间的适应性量表和自我效能的量表,想考察患者适应性与自我效能之间的影响关系,或者说适应性的强弱是否会影响到患者自我效能的高低。此时适应性量表和自我效能量表都不是单一的变量,而是有N个题项构成的...

weixin_39637614的博客 7709

单链表的基本操作

typedef struct Lnode//定义单链表的结点类型{//每个结点存放一个数据元素//指针指向下一个结点Lnode* L;//声明一个指向单链表第一个结点的指针LinkList L;//声明一个指向单链表第一个结点的指针注意:强调这是一个单链表,使用LinkList强调这是一个结点,使用Lnode*

m0_63783532的博客 2245

从JT808/JT1078协议到多端协同:构建高并发北斗车辆监控平台的技术实践

本文详细介绍了基于JT808/JT1078协议构建高并发北斗车辆监控平台的技术实践,包括协议解析、高并发架构设计、多端协同实现及数据持久化策略。通过Netty、Kafka等技术优化,系统成功支撑日均2000万条消息处理,为GPS车辆动态监控系统提供了可靠解决方案。

weixin_28358083的博客 224

数据结构—单链表的基本操作

数据结构—单链表的基本操作,单链表的初始化,求表长,按序号查找结点,按值查找表结点,插入结点操作,删除结点操作,头插法建立单链表,尾插法建立单链表

Smooth的博客 715

【Godot】实现对话系统

在 Godot 中实现对话系统(Dialogue System)是游戏开发中的常见需求。Godot本身自带的的灵活性和轻量级脚本语言 GDScript 使得实现对话系统变得相对简单。以下是实现一个基础对话系统的示例。(语言为GDScript但高亮选择Python因为类似)通过 Godot 和 GDScript,我们可以给我们的游戏实现一个对话系统。从简单的文本显示到复杂的分支对话,Godot 提供了足够的灵活性来满足我们的需求。如果需要更高级的功能,可以尝试使用现成的插件如 Dialogic。

Octopus2077的博客 2519

SAP PPDS启发式排产实战:从零配置到自定义规则开发(附ABAP代码示例)

本文详细介绍了SAP PPDS启发式排产的实战应用,从基础配置到自定义规则开发的全流程。通过ABAP代码示例,展示了如何实现多目标优化、实时响应和约束可视化,帮助企业提升订单交付率、减少设备闲置时间。文章还包含开发环境准备、标准模板解析、自定义开发步骤及性能优化技巧,适合制造业数字化转型的实践参考。

seed的博客 183

【数据结构】单链表的基本操作

【数据结构】2,单链表的基本操作 实验内容: 编写一个完整的程序,实现单链表的生成、插入、删除、输出等基本操作。 (1) 随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。 (2) 计算单链表的长度,遍历单链表。 (3) 把单链表中的元素逆置(不允许申请新的结点空间)。 (4) 在单链表中删除所有值为偶数的元素结点。 (5) 编写在非递减有序单链表中插入一个元素使链表元素仍有序的函......

yp25843的博客 4306

量化交易 米筐 因子分组打分(成长因子)

分组动手练习 在米筐上因子数据没有处理,提供的很多因子没有默认分类,存在一些因子没有的情况,我们就选择一些常见的因子。 价值因子 质量因子 成长因子(历史名称) pe_ratio return_on_invested_capital in_revenue pcf_ratio du_return_on_equity inc_eps pb_ratio return_on_asset_net_profit inc_total_asset market_cap return_on_equ

廷益_飞鸟的博客 932

数据结构-链表的基本操作

数据结构-链表(C语言) 四种常见的链表结构 结点包括两个域,存储数据信息的是数据域,存储直接后继或前驱存储位置的域的是指针域。指针域中存储的信息称为指针。单链表的指针域只有一个Next指向直接后继而双向链表的指针域有两个Next和Prev分别指向直接后继和直接前驱结点。 使用链表的好处:便于插入和删除,时间复杂度都为O(1)。 下面是关于单链表的创建,插入,删除,查询和遍历的代码 结点的定义 ...

weixin_43527977的博客 601

PINN物理信息网络 | 非线性薛定谔方程的物理信息神经网络

PINN物理信息网络 | 非线性薛定谔方程的物理信息神经网络

算法如诗的博客 1298

基于STM32设计的水下水质检测装置(微信小程序)(205)

本项目设计了一款基于STM32微控制器为核心的水下水质检测设备,该设备具有高度集成化、智能化的特点,能够实时监测水深、温度、浊度及溶解性总固体(TDS)等关键水质参数,并通过4G网络将数据上传至腾讯云IOT物联网平台,实现远程监控和数据分析。同时,为了便于操作和移动观测,还配套开发了微信小程序,用户可通过微信小程序实时查看并控制设备的各项功能,如调整下潜深度等。

1250

数据结构之单链表的基本操作

#include<stdio.h> #include<string.h> #include<stdlib.h> typedef int ElemType; //单链表的结构 typedef struct LNode{ ElemType data; //结点的数据 struct LNode *next;//下一结点的地址,指向下一个结点 }L...

Gloming__zxy的博客 413

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

数据结构--单链表基本操作

单链表的数据结构 typedef struct LNode { ElemType data; struct LNode *next; }LNode, *LinkList; 单链表的基本操作: //创建单链表 LinkList CreateList(); //单链表的输出 Status ListTraverse(LinkList L); //初始单链表 Status Ini

做个假设——坚持两年,我会怎么样 1149

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数据结构——单链表的基本操作

介绍🍃数据结构专区数据结构参考该部分知识参考于《数据结构(C语言版 第2版)》29~36页补充后序代码中会遇见这个结构体...对于这个代码,目的是定义线性表的单链表储存结构。关键在于LNode与*LinkList抽象出两个句子:LNode,参照typede的用法,可以得知LNode就是struct LNode的别名,即LNode==struct LNode;LinkList,是一个指向该结构体的的指针的别名。

2301_80492355的博客 2464

搬砖:数据结构之链表基本操作总结

数据结构之链表基本操作总结 2017年05月11日 18:22:11 Lily_whl 阅读数:19151 https://blog.youkuaiyun.com/Lily_whl/article/details/71662133 数组与链表的区别 数组(顺序存储)和链表(链式存储)是两种不同的数据存储方式。 数组是一组具有相同类型和名称的变量的集合,这些变量称为数组的元素,每个数组元素都有一个编号...

hunter 612

数据结构链表基本操作

数据结构链表基本操作 单链表反转 如图所示指针p,q初始位置,首先把p结点当作尾结点,即p.Next = NULL,通过r指针记录q.Next便于q向后移动。 if(head.Next == null) { return; } p = head.Next; q = head.Next.Next; r = null; p.Next = null; while(q != null){ ...

NF404NF 303

【数据结构】链表的基本操作

规划 /* 链表的基本操作 */ #include<iostream> #include<algorithm> #define ElemType int using namespace std; typedef struct LNode{ ElemType data; //数据域 LNode *next; //指针域 } *LinkList; //链表的初始化 void IniteList(LinkList &L){ L = new LNode; //创建头结点

m0_53171456的博客 9130

数据结构之链表基本操作

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查

ooooo12345re的博客 815

数据结构 C语言 实现单链表的各种基本操作

大概写了150多行,都是很基础的操作。需要的自取。 (书籍为数据结构教程(第五版)李春葆) 实验内容 实验三 链表基本操作的实现 【实验目的】 1.掌握线性表的链式存储表示。 2.掌握单链表的基本操作,包括创建、查找、插入和删除等算法。 【实验内容】 编写程序linklist.cpp,实现单链表的各种基本运算(假设单链表的元素类型为char),并在此基础上设计主程序main.cpp,完成如下功能: 1.初始化单链表; 2.依次采用尾插法插入元素a,b,c,d,e; 3.输出单链表; 4.判断单链表的长度;

WindsProgrammer的博客 5807

C语言数据结构单链表基本操作

#include<iostream> #include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct Lnode { int data; struct Lnode *next; }Lnode,*Linklist; int InitList(Linklist...

黑锤的博客 908

利用C语言创建数据结构中链表的遍历及其基本操作

标题在这里插入代码片利用C语言创建数据结构中链表的遍历及其基本操作 笔者希望此程序希望对学数据结构或者C的朋友们提供帮助! 如有更完美的程序,请在评论区留下您宝贵的意见,咱们一起讨论,学习进步!!! 程序: #include"stdio.h" #include"malloc.h" typedef struct stu //自定义链表结点数据类型名ST和指针类型名*STU { ch...

regens的博客 591
上一篇: [设计模式]23种设计模式
下一篇: [算法]找出单链表中的倒数第k个元素
陶程
博客等级 码龄12年 360粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值