单链表常见面试题
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、单链表的反转(没有明白)
希望哪位大神指教,单向链表的反转问题
原文:https://www.cnblogs.com/nj123/p/14207901.html