栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

单链表 ListNode

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单链表 ListNode

链表

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

小结:

    链表是以节点的方式来存储,是链式存储

    每个节点包含 data 域, next 域:指向下一个节点.

    如图:发现链表的各个节点不一定是连续存储.

    链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定

单链表(带头结点) 逻辑结构示意图如下:

插入方式 头插法

尾插法

删除节点

示例代码:
public class listNode {
    public static void main(String[] args) {
        Node a = new Node(1,"王二","工人");
        Node b = new Node(2,"张三","小编");
        Node c = new Node(3,"李四","村官");
        Node d = new Node(4,"王五","寡头");

        linkNode LN = new linkNode();
        LN.addH(a);
        LN.addH(b);
        LN.addH(c);
        LN.addR(d);
        LN.list();

        LN.del(3);
        LN.del(5);
        LN.del(0);

        LN.list();
    }
}

class linkNode{
    private Node head = new Node(0,"","");

    //尾插法
    public void addR(Node newNode){
        Node temp= head;

        while (true){
            if(temp.next == null){
                break;
            }
            temp = temp.next;
        }

        temp.next = newNode;
    }

    //头插法
    public void addH(Node newNode){
        Node temp = head;
        boolean flag = false;

        if(temp.next == null){
                temp.next = newNode;
                temp = temp.next;
                temp = null;
        }
        else
        {
            newNode.next = temp.next;
            temp.next = newNode;
        }
    }

    //删除节点
    public void del(int num){
        Node temp = head;

        while (true){

            if (temp.next == null){
                System.out.println("没有找到,遍历完毕");
                return;
            }
            //用删除节点的前一个temp去处理
            if(temp.next.num == num){
                
                temp.next = temp.next.next;
                System.out.println("已经找到" + num + ",删除完毕!");
                break;
            }

            temp = temp.next;
        }
    }
    //显示链表
    public void list(){
        if (head.next ==null){
            System.out.println("链表为空");
            return;
        }
        Node temp = head.next;
        while (true){
            if(temp == null){
                break;
            }
            System.out.println(temp.toString());
            temp = temp.next;
        }
    }
}

class Node {
    public int num;
    public String name;
    public String data;
    public Node next;

    //构造链表
    public Node(int num, String name, String data) {
        this.num = num;
        this.name = name;
        this.data = data;
    }

    @Override
    public String toString() {
        return "Node{" +
                "num=" + num +
                ", name='" + name + ''' +
                ", data='" + data + ''' +
                '}';
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770382.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号