求单向链表的有效节点个数
- 单向链表的链表尾最后一个节点
指向下一个节点的地址为null
public int void number(Node head){
//判断是否为空链表
if(head.next==nulll){
return 0;
}
//计数器
int i=0;
//遍历链表
Node temp=head.next;
while(temp!=null){
i++
//下一个节点
temp=temp.next;
}
}
查找单向链表中倒数第k个节点
- 先求出单向链表中的有多少个有效节点
- 根据有效节点的个数减去k就是单向链表遍历的次数
- 注:头结点不用遍历,头节点不存储数据
参数 倒数第k个 要查询链表的头节点,返回类型 Node,返回一个节点
public Node unlooking(Node hear,int k){
//temp临时变量用来遍历 。hear。next 表示下一个节点,跳过头节点遍历
Node temp=hear.next;
//判断链表是否为空链表
if(temp==null){
return null;
}
//判断k是否合法
if(k<0||K>LinkedList.number())
{
return;
}
//遍历单向链表
//LinkedList.number()求出单向链表有效个数
//有效个数减去k等于要遍历的次数,找到倒数的节点
for(int i=0;i<LinkedList.number()-k;i++){
//临时辅助节点移动
temp=temp.next;
}
//返回当前节点
return temp;
}
- temp指向第一个节点,假设k=1,有效节点个数为3
则链表需要移动两次到最后的节点(3-1=2) - 假设k=3,倒数第三个,很明显是第一个,不用移动(3-3=0)