美文网首页
自己动手写数据结构之单链表

自己动手写数据结构之单链表

作者: 逍遥白亦 | 来源:发表于2020-12-19 12:09 被阅读0次

    单链表实现

    1 定义

    单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。

    2 基本操作

    在链表头添加元素

    查询包含指定数值的节点

    删除指定节点

    3 包含元素

    链表头 head

    节点 Node

    节点中数据域 data

    节点中指针域 next

    链表长度 size

    4 分析

    节点Node由数据域和指针域构成

    数据域和指针域

    单链表整体

    单链表整体

    插入操作

    在链表头添加元素的过程就是让新节点的下一节点指向头节点,再让头节点指向新节点

    newNode.next = first

    first = newNode

    删除操作

    删除操作分两步:

    1. 先找到要删除的节点
    2. 删除该节点

    删除节点时需要判断该节点是不是第一个

    具体程序实现

    public class SingleLinkedList {
    
        private Node first;
        
        public SingleLinkedList() {
            first = null;
        }
    
        public void insert(int data){
            Node newNode = new Node(data);
            newNode.next = first;
            first = newNode;
        }
    
        public Node find(int data){
    
            Node current = first;
    
            while (current.data != data){
                if (current.next == null){
                    return null;
                }else {
                    current = current.next;
                }
            }
    
            return current;
    
        }
    
        public Node delete(int data){
            Node current = first;
            Node previous = first;
    
            current = find(data);
    
            if (current != null){
                if (current == first){
                    first = first.next;
                }else {
                    previous.next = current.next;
                }
            }
    
            return current;
        }
    
        class Node{
    
            private int data;
    
            private Node next;
    
            public Node(int data) {
                this.data = data;
            }
    
            @Override
            public String toString() {
                return "Node{" +
                        "data=" + data +
                        '}';
            }
        }
    
        public void disPlay(){
    
            Node temp = first;
    
            while (temp != null){
                System.out.println(temp.data);
                temp = temp.next;
            }
    
        }
    
    }
    

    相关文章

      网友评论

          本文标题:自己动手写数据结构之单链表

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