键盘手C 2016-05-04 11:28 采纳率: 60%
浏览 1661
已采纳

java中的链表类的remove问题

新人初学java,有些基本问题不是很懂,求教各位,谢谢
java中的LinkedList这个链表类中有这样一个方法,removefirst方法,含义是删除,并且返回链表的第一个元素,我想问下各位,是不是只要是删除了第一个元素,那么后面的第二个元素会顶到原来第一个元素的位置上,当我第二次调用这个方法时,相当于删除了链表的第一个元素(原来的第二个元素)?
谢谢各位了

  • 写回答

4条回答 默认 最新

  • 武哥聊编程 Gitchat金牌讲师 2016-05-04 11:55
    关注

    是的,removeFirst()方法返回链表第一个元素,并且删掉这个元素,当再一次调用该方法时,又会获得第一个元素(原来的第二个)并删除之。给你看一下removeFirst()的源码你就知道了:

     public E removeFirst() {  
            final Node<E> f = first;  
            if (f == null)  
                throw new NoSuchElementException();  
            return unlinkFirst(f); //private方法  
        }  
    
        private E unlinkFirst(Node<E> f) {  
            // assert f == first && f != null; //需确保f为头结点,且链表不为Null    
            final E element = f.item; //获得节点的值  
            final Node<E> next = f.next; //获得头结点下一个节点  
            f.item = null;  
            f.next = null; // help GC  
            first = next;  
            if (next == null)  
                //如果next为null,则表示f为last结点,此时链表即为空链表   
                last = null;  
            else  
                //修改next的前向指针,因为first结点的前向指针为null   
                next.prev = null;  
            size--;  
            modCount++;  
            return element;  
        }  
    

    具体的关于LinkedList其他问题你可以参考这篇博文http://blog.csdn.net/eson_15/article/details/51135944

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)