java单向链表_Java实现单向链表基本功能

一、前言

最近在回顾数据结构与算法,有部分的算法题用到了栈的思想,说起栈又不得不说链表了。数组和链表都是线性存储结构的基础,栈和队列都是线性存储结构的应用~

本文主要讲解单链表的基础知识点,做一个简单的入门~如果有错的地方请指正

二、回顾与知新

说起链表,我们先提一下数组吧,跟数组比较一下就很理解链表这种存储结构了。

2.1回顾数组

数组我们无论是C、Java都会学过:

数组是一种连续存储线性结构,元素类型相同,大小相等

d7c2a2a277b295d55541c6534f62133a.png

数组的优点:

存取速度快

数组的缺点:

事先必须知道数组的长度

插入删除元素很慢

空间通常是有限制的

需要大块连续的内存块

插入删除元素的效率很低

2.2链表说明

看完了数组,回到我们的链表:

链表是离散存储线性结构

n个节点离散分配,彼此通过指针相连,每个节点只有一个前驱节点,每个节点只有一个后续节点,首节点没有前驱节点,尾节点没有后续节点。

cb213a0c3cf801d9fa1c7639d7bc2fad.png

链表优点:

空间没有限制

插入删除元素很快

链表缺点:

存取速度很慢

链表相关术语介绍,我还是通过上面那个图来说明吧:

dc20cd69fbd53b2ee46388a2b991292e.png

确定一个链表我们只需要头指针,通过头指针就可以把整个链表都能推导出来了~

链表又分了好几类:

单向链表

一个节点指向下一个节点

双向链表

一个节点有两个指针域

循环链表

能通过任何一个节点找到其他所有的节点,将两种(双向/单向)链表的最后一个结点指向第一个结点从而实现循环

操作链表要时刻记住的是:

节点中指针域指向的就是一个节点了!

三、Java实现链表

算法:

遍历

查找

清空

销毁

求长度

排序

删除节点

插入节点

ps:我将head节点定义在成员变量上:

private static Node head = new Node();

首先,我们定义一个类作为节点

数据域

指针域

为了操作方便我就直接定义成public了。

public class Node {

//数据域

public Integer data;

//指针域,指向下一个节点

public Node next;

public Node() {

}

public Node(int data) {

this.data = data;

}

public Node(int data, Node next) {

this.data = data;

this.next = next;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值