单向链表常见面试题

单链表常见面试题

1、求单链表中有效节点的个数;如果是带头结点的单向链表,需求不需要统计头节点。

    //统计有效节点个数;不统计头节点
    public int length(Node head){
        //判断链表是否为空
        if(head.next==null){
            System.out.println("链表为空");
            return 0;
        }
        Node temp=head.next;
        int length=0;
        while(true){
            if(temp==null){//遍历到链表的最后
                break;
            }
            length++;
            temp=temp.next;
        }
        return length;
    }

2、查找单链表中倒数第k个节点

    //查找单链表中倒数第k个节点
    /*1.编写一个方法,接收head节点,同时接收一个index
    2.index表示是倒数第index个节点
    3.先把链表从头到尾遍历,得到链表的总的长度getLength
    4.得到size后,我们从链表的第一个开始遍历(size-index)个,就可以得到
    5.如果找到了,则返回该节点,否则返回null
    */
    public Node findindex(Node head,int index){
        //判断链表是否为空
        if(head.next==null){
           return null;
        }
        //定义一个临时变量,用来遍历
        Node temp=head.next;
        //得到链表的长度
        int len = length(head);
        //做一个index的校验
        if(index<=0||index>len){
            return null;
        }
        //找到倒数第K个位置 len-index为要遍历到的位置
        for(int i=0;i<len-index;i++){
            temp=temp.next;
        }
        return temp;
    }

3、单链表的反转(没有明白)
希望哪位大神指教,单向链表的反转问题

posted @ 2020-12-29 17:44  胡木杨  阅读(163)  评论(0)    收藏  举报