算法通关村第一关--链表青铜挑战笔记

如何构造链表?

链表是一种链式存储的数据结构,

链表节点结构为: 

datanext

链表的结构为:

其中data用来存放数据,next存放指向下一个数据的地址。

public class Node {
    public int data;//数据域
    public Node next;//指针域
    public Node () {};
    public Node (int data) {
        this.data = data;
    }
}

构建一个单链表

单链表构建有两种方法:1.头插法 ; 2.尾插法。

头插法:数据插入到链表的表头。

尾插法:数据插入带链尾。

Node head = new Node();
int a[] = {1,2,3,4,5};
for(int i =0; i < a.length; i++){
    Node node = new Node(a[i]);
    node.next = head.next;
    head.node = head;
}

链表的插入

单链表的插入要考虑三种情况:1.在表头插入 2.在中间插入 3.在表尾插入

1.在表头插入

在表头插入节点时,直接将数据插入到表头,如果链表没有头节点,那么要将head重新指向插入的新数据。

2.在中间插入

在中间插入节点时,首先遍历找到要插入的位置,将数据插入到前驱节点和后继节点之间,但是不能先获取他的前驱节点,如果先获取前驱节点,那么之后的数据就会丢失。每个数据只有一个前驱节点和一个后继节点。

 所以先连接插入数据的后继节点

 

3.在表尾插入

在表尾插入节点,只需要将将表尾节点指向新节点就行了。

 

链表的删除

链表的删除和插入一样,也分为3种情况,1.删除表头 2.删除中间数据 3.删除表尾

1.删除表头

删除表头元素只需要将头节点指向删除数据的下一个数据,原来的节点就被删除了。

 

2.删除中间

首先遍历找到删除元素的位置,找到删除数据的前驱节点和后继节点,直接将删除数据的前一个数据指向删除数据的后一个数据。

 

3.删除表尾

找到表尾的前一个数据,将这个数据的下一个指向null值,表尾数据就删除了

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值