java实现链表

一、链表定义

链表通过指针将一组零散的内存块串联在一起进行使用。
数据格式:
在这里插入图片描述
根据上面的图展示,每个内存块可以称为链条的一个“结点”,结点包含了数据和下一个结点的地址;同时有2个结点特殊:第一个结点和最后一个结点,第一个结点称为“头节点”,存储链表基地址,最后一个结点称为“尾节点”,尾节点的下一个结点为空地址 NULL。

二、链表实现定义

public class LinkList<T> {
   
    //结点定义
    private class Node{
   
        //数据
        T item;
        //指向下一个结点
        Node next;
        //构造器
        public Node(T item,Node next){
   
            this.item = item;
            this.next = next;
        }
        public Node(T item){
   
            this.item = item;
        }
    }
    //头结点
    private Node head;
    //尾结点
    private Node tail;
    //结点个数
    private int size;

    //链表定义
    public LinkList(){
   
        this.head = new Node(null,null);
        size = 0;
    }
    }

三、查找特定位置的链表结点

//查找特定位置的链表结点
    public Node get(int index) {
   
        if (index <0 || index >=this.size){
   
            return null;
        }else{
   
            Node temp = this.head;
            for(int i =1;i<=index;i++){
   
                temp = temp.next;
            }
            return temp;
        }
    }

四、插入链表结点

在这里插入图片描述
注意:
将结点 x 的 next 指针指向结点 b,再把结点 a 的 next 指针指向结点 x,这样才不会丢失指针,导致内存泄漏。

//在链表的第i个位置插入一个值为t数据
    public void insert(int index ,T data) throws Exception{
   
        if(index <0 ||index > this.size){
   
            throw new Exception("插入超出范围");
        }else{
   
            Node newNode = new Node(data);
            //在头结点插入元素
            if (index ==0){
   
                if(this.size >0){
   
                    Node temp = head;
                    newNode.next = temp;
                }
                head = newNode;
            }
            //在尾结点插入元素
            else if(index == this.size){
   
                Node temp = tail;
                temp.next = newNode;
                this.tail  = newNode;

            }else{
   
                //在中间插入元素
                Node preNode = get(index-1);
         
  • 13
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值