数据结构(单链表)

数据结构(单链表)
1.简介: 你可以把链表看成是一条链子,一环扣一环,必须通过上一个节点找到下一个节点next

2.单向链表的每一个节点都包含一个数据和一个指向下一个节点的地址值(头结点和未节点除外,头结点没有数据只有一个地址值,尾节点的next地址值是空的,最后面因为没有数据了),链表图片
在这里插入图片描述
3,应用场景
高速缓存的应用,用链表存储数据极快! 因为你们知道链表的插入和删除是很快的,但是查询很慢! 极端情况下要遍历整个链表才能找到!

4.自己用java代码实现一个单链表

1. 自己写一个链表节点类!

package com.aop.aspect.datastructure;
public class Node {
    //头节点
    Node head;
    //节点数据
    Object data;
    //下一个节点
    Node next;

    public Node(Object data) {
        this.data = data;
    }

    public void setHead(Node head) {
        this.head = head;
    }
    
    public Node getHead() {
        return head;
    }
    
    //改进  下一个节点,用第一个节点append依次向下追加! 无限追加!
    public Node append(Node node){
        this.next = node;
        Node newNode = this.next;
        if (this.head == null){
            System.out.println(this.getData());
            newNode.setHead(this);
        }
        System.out.println(this.next.getData());
        if (this.getHead()!=null){
            newNode.setHead(this.head);
        }
        return newNode;

    }

    //获取下一个节点
    public Node next(){
        return this.next;
    }

    //获取节点中的数据
    public Object getData(){
        return this.data;
    }

    //当前节点是否为最后一个节点
    public boolean isLast(){
        return next == null;
    }
    
    //遍历节点,打印链表所有数据!
    public void printAll(Node head){
        if (head == this){
            System.out.print(head.getData() + " ");
        }
        while (head !=null && (head=head.next)!=null){
            System.out.print(head.getData()+" ");
        }
    }
}

2.测试自己实现的链表!

package com.aop.aspect.datastructure;

public class TestNode {

    public static void main(String[] args) {
        //创节点!
        Node node1 = new Node(1);
        //node1是头节点,遍历的时候必须要拿到头结点才能向下遍历,这里打印下
        System.out.println("我是头结点地址值 " + node1);
        Node node2 = new Node(2);
        Node node3 = new Node(3);

        Node thisNode = node1.append(node2).append(node3).append(new Node(4));
        //获取头节点,并打印节点数据
        Node head = thisNode.getHead();
        System.out.println("我是头结点地址值: " + head);
        //打印添加的所有链表数据!
        node1.printAll(thisNode);

    }
}

3.打印结果!

在这里插入图片描述

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值