美文网首页Java数据结构和算法
数据结构之 单向链表

数据结构之 单向链表

作者: 测试员 | 来源:发表于2019-08-22 11:13 被阅读0次

描述

链表是有序的列表,但是它在内存中是存储如下


单向链表.png

1)链表是以节点的方式来存储,是链式存储
2)每个节点包含 data 域, next 域:指向下一个节点.
3)如图:发现链表的各个节点不一定是连续存储.
4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定

代码实现

    package com.yuan.common.queue;
    
    /**
    * @author Yuan-9826
    */
    public class SingleLinkedList {
    
        private HeroNode head = new HeroNode(0, "");
    
        /**
        * 按照添加顺序增加一个节点
        *
        * @param node
        */
        public void add(HeroNode node) {
            //头结点不能动
            HeroNode temp = head;
            //一直循环直到找到尾部节点做接下来的操作
            while (temp.next != null) {
                temp = temp.next;
            }
            //找到尾部节点时 赋值
            temp.next = node;
        }
    
        /**
        * 按照头编号顺序增加一个节点
        *
        * @param node
        */
        public void addByHead(HeroNode node) {
            if (node.head == 0 || node.head <= 0) {
                throw new RuntimeException("数据不合法");
            }
            HeroNode temp = head;
            //头结点不能动
            boolean flag = false;
            while (true) {
                if (temp.next == null) {
                    //说明已经在最后面了
                    temp.next = node;
                    break;
                }
                if (temp.next.head > node.head) {
                    //位置找到就在temp后面插入
                    node.next = temp.next;
                    temp.next = node;
                    break;
    
                } else if (temp.next.head == node.head) {
                    break;
                }
                temp = temp.next;
            }
    
        }
    
        /**
        * 展示所有节点
        */
        public void show() {
            //头结点不能动
            HeroNode temp = head;
            //一直循环直到找到尾部节点
            while (temp.next != null) {
                //打印出下一个指向的节点
                System.out.println(temp.next);
                temp = temp.next;
            }
        }
    
        /**
        * 更新或增加一个节点(如果该节点存在)
        *
        * @param newNode
        */
        public void update(HeroNode newNode) {
            HeroNode temp = head;
            while (temp.next != null) {
                temp = temp.next;
                if (newNode.head == temp.head) {
                    temp.data = newNode.data;
                    return;
                }
            }
            addByHead(newNode);
        }
    
        /**
        * 删除一个节点
        *
        * @param nodeHead 节点编号
        */
        public void delete(int nodeHead) {
            HeroNode temp = head;
            while (temp != null&&null != temp.next) {
                if (temp.next.head == nodeHead) {
                    temp.next = temp.next.next;
                    return;
                }
                temp = temp.next;
            }
        }
    }
    
    class HeroNode {
        public int head;
        public String data;
        public HeroNode next;
    
        public HeroNode(int head, String data) {
            this.head = head;
            this.data = data;
        }
    
        @Override
        public String toString() {
            return "[" + "head=" + head + ", data='" + data + ']';
        }
    }

相关文章

  • 数据结构 | 其二 链表

    冰河winner - 数据结构之链表 2.1 单向链表 数据结构(一) 单链表的实现-JAVA 2.2 双端链表 ...

  • 算法与数据结构知识汇总(二、链表)

    1、概念 2、链表的数据结构 单向链表的数据结构如下图: 上图数据结构为单向链表,简称单链表,该数据结构由若干个节...

  • 2019-12-04 Java-LinkedList源码解读

    @TOC 1、链表数据结构 链表分为单向链表和双向链表,他们的区别在于,单向链表只能单向寻址,而双向链表可以双向寻...

  • 单向链表的基本操作

    参考 一步一步写算法(之单向链表) 1. 单向链表的数据结构 2. 创建链表 3. 增加节点 4. 删除节点

  • 用Java写单向链表

    数据结构—单向链表 为了巩固自己的基础知识,这次就用 Java 来写一个单向链表。问:什么是单向链表?首先链表是数...

  • 线性表-单向循环链表

    单向循环链表 单向循环链表示意图如下: 数据结构定义(同普通链表) 单向循环链表初始化与赋值 在上面循环遍历查找尾...

  • 数据结构笔记

    数据结构课程概览 ================== 1.顺序表 2.链表:单链表,单向循环链表,双链表...

  • 链表反转

    概述 链表反转是非常经典的面试题,要实现此功能,需先实现链表的数据结构。 链表类 获得单向链表方法 输出单向链表方...

  • 总结

    Android篇 数据结构与算法顺序表 - ArrayList源码链表 - 单向链表、双向链表 - LinkedL...

  • 2018-03-26

    数据结构:单向链表 #include#include//实现一个简单的单向链表 (不带头节点的链表,只有一个头指针...

网友评论

    本文标题:数据结构之 单向链表

    本文链接:https://www.haomeiwen.com/subject/bpigsctx.html