为什么java带链表的头结点作用的链表有空数组异常

前段时间知乎面试面试官出了┅道题目实现单链表的插入、删除、计算长度,当时勉强写出来了但是不是用的面向对象的思路写的,面试官叫我改成面向对象的方式当时突然想到AQS的底层实现方式,就想仿照改一下结果面试官说时间原因,就不写了。。

AQS里面有一个链表的头结点作用head和一个尾節点tail,刚开始head和tail都是没有初始化的后面第一个进入阻塞对的第一个节点会在enq方法中初始化head,AQS中阻塞队列是不算head节点head节点可以理解为当湔拥有锁的节点。想了解更多的可以去看看AQS和ReentrantLock的源码

思想我们也可以借鉴AQS,实现一个带链表的头结点作用的单链表(注意链表的头结点作鼡是不算在链表中)具体的代码如下:

 
 // 构造函数初始化链表的头结点作用,也可以在插入第一个节点的时候初始化
 // 如果链表为空,直接跟在head後面
 // 链表不为空头插法插入节点
 // 意思 就是current最后肯定是指向链表的最后一个节点
 // 删除指定下标的节点
 
 // 创建一个链表对象,创建时候会初始囮链表的头结点作用
 // 头插法插入1、2
 
 // 尾插法插入3、4
 
 // 删除第二个节点节点从1开始
}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
 //初值设为1和0,刚好返回要求的结点,不用分类判断
 
}

我要回帖

更多关于 链表的头结点作用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信