链表

链表
链表是根据元素节点逻辑关系排列起来的一种数据结构,和数组类似,都可以保存多个数据。每一个链表都包含多个节点,节点又包含两个部分,一个是数据域(储存节点含有的数据),一个是引用域 (储存下一个节点或者上一个节点的地址)。链表在物理存储单元上非连续、非顺序

链表的种类
单项链表:每一链表节点的引用域只指向下一节点;
双向链表:每一节点中有两个引用域,分别指向上一节点和下一节点;
环形链表:链表最后一节点的引用域指向头节点;
双向环形链表:每一节点中有两个引用域,分别指向上一节点和下一节点,其中链表最后一节点的引用域指向前一节点和头节点,而头节点指向第二节点和最后一节点;

链表&数组
数组的长度固定,在无法提前确定所需长度时使用数组会很不方便,而且在进行删除和插入操作时也需要对较多数据进行处理。而链表虽然在进行循环遍历时效率不高,但是插入和删除时却很方便。

定义单项链表节点
定义时要分别定义数据域和引用域两部分。
class Node {
private Node next; // 指向下一节点
private String data;// 存储数据
public Node(String data) {
this.data = data; //在创建节点时候要传入节点数据
}
//定义方法:设置节点引用域
public void setNext(Node next) {
this.next = next;
}
//获取下一节点
public Node getNext() {
return next;
}
//获取节点数据
public String getData() {
return data;
}
}

在进行链表操作的时候,首先需要的是一个头节点(第一个节点即为头节点),之后每一个节点的引用都保存在上一节点的next属性之中,而在进行输出的时候也应该按照节点的先后顺序,一个一个取得每一个节点所包含的数据。

单向链表节点的删除
1.先找到需要删除的节点前一个节点temp
2.令 temp.next=temp.next.next;
此时被删除的节点就没有了引用指向。

单向链表节点的插入
1.先找到需要添加节点newNode的位置的前一个节点temp
2.令newNode.next=temp.next;
temp.next = newNode;

遍历
//使用循环遍历
public static void BL(Node node){
while (node != null) {//节点不为空时继续遍历
System.out.println(node.getData());//输出节点数据
node = node.getNext();//获取下一节点
}
}

//使用递归遍历
public static void BL(Node node) {
if (node == null) {
return;
}//节点为空时结束
System.out.println(node.getData());//输出节点数据
BL(node.getNext());//对下一节点进行同样操作
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值