单链表的学习

单链表的结构

在这里插入图片描述
链表是一种在物理上非连续非顺序的数据结构,由若干节点(node)所组成。

单向链表的每一个节点又包含两部分,一部分是存储数据的变量data,另一部分是指向下一个节点的指针next

public clss Node{
	int data;//数据
	Node next;//下一个节点的地址

public Node (int data) {//构造函数给data赋值
		this.data = data;
	}
}

链表的第一个节点被称为头节点(图中的Head),最后一个节点被称为尾节点尾节点的next指针指向空(NULL)。

运用《小灰算法之旅》的话就是:正如地下党的联络,一级一级,单线传递。

public class Solution {

	public static void main(String[] args) {		
		Node node = new Node(7);
		Node node1 = new Node(5);
		node.next = node1;//值传递
	}
}

由代码块1和代码快2可以画图来表示

在这里插入图片描述简单来表示就是

在这里插入图片描述

以此类推就可以多个相连

当然,因为main方法弹栈的原因,导致创建内存区无效,不方便管理和维护

为了方便管理,我们创建一个新的类

单链表的输入和输出

1.创建节点类

//在堆内存中创建节点
public class ListNode {
    public int value; // 数据域
    public ListNode next; // 下一个地址的节点域

    public ListNode(int value){
        this.value = value;
    }

}

2.创建管理类

//  链表的管理类
public class LinkList {

    ListNode head = null;//初始默认值


    //写一个方法,创建链表,链表的插入方法
    public void insert(int value){
        ListNode listNode = new ListNode(value);
        if (head == null){
            head = listNode;//值传递
            return;
        }
        ListNode tempNode = head;
        while (tempNode.next !=null){
            tempNode = tempNode.next;
        }
        tempNode.next = listNode;
    }


      // 输出链表的值
    public void printLink(){
        //定义游标指向链表当中的第一个节点
        ListNode tempNode = head;
        while (tempNode !=null){
            System.out.println(tempNode.value);
            tempNode = tempNode.next;
        }
    }

}

3.创建一个demo类
输入

public class demo {
    public static void main(String[] args) {
        LinkList linkList = new  LinkList();
        linkList.insert(5);
        linkList.insert(7);
        linkList.insert(8);
        linkList.insert(9);
        linkList.printLink();
    }
}

4.流程图
在这里插入图片描述

在这里插入图片描述

总结

管理类的思路顺序为:

1.先创建头部初始默认值为空
2.给Listnode创建内存并赋值
3.第一步先if判断一下头部是否为null
4.定义指针tempNode,赋值
5.while循环tempNode地址不为空
6.最后tempNode传递给listNode,最后一个指向空,结束
7.然后定义游标指向链表的第一个节点,在demo调用printLink
8.当tempNode不为空的时候,输出value的值和地址,一直到最后一个指向空

自己理解自己懂了,可能别人看不懂。。。自己理解的最后一幅图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值