查找单链表倒数第k个节点(算法入门)
2021/7/30 11:07:03
本文主要是介绍查找单链表倒数第k个节点(算法入门),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
public class abc {
public static void main(String args[]) {
Hero n1=new Hero(1,"a","aa");
Hero n2=new Hero(2,"b","bb");
Hero n3=new Hero(3,"c","cc");
Hero n4=new Hero(4,"d","dd");
Lian l=new Lian();
l.add(n3);
l.add(n4);
l.add(n2);
l.add(n1);
l.show();
System.out.println(l.daoshu(l.getHead(), 2)); //单链表倒数第二个
}
}
class Lian{
Hero head=new Hero (0,"","");
public void add(Hero hero) {
Hero temp=head;
while(true) {
if(temp.next==null) {
break;
}
temp=temp.next;
}
temp.next=hero;
}
public void show() {
Hero temp=head.next;
if(temp==null) {
System.out.println("空");
}
while(true) {
if(temp==null) {
break;
}
System.out.println(temp);
temp=temp.next;
}
}
public int getLength(Hero head) { //得到链表有效节点数
Hero cur=head.next;
if(head.next==null) {
System.out.println("空");
}
int length=0;
while(cur!=null) {
length++;
cur=cur.next;
}
return length;
}
public Hero getHead() {
return head;
}
public Hero daoshu(Hero hero,int k) {
Hero cur=head.next;
if(head.next==null) {
return null;
}
int size=getLength(head);
if(k>size||k<=0) {
return null;
}
for(int i=0;i<size-k;i++) {// i从0开始,链表长-k,从正向读取节点
cur=cur.next;
}
return cur;
}
}
class Hero {
int no;
String name;
String nickname;
Hero next;
Hero(int no,String name,String nickname){
this.no=no;
this.name=name;
this.nickname=nickname;
}
public String toString() {
return "Hero [no=" + no + ", name=" + name + ", nickname=" + nickname + "]";
}
}
结果
Hero [no=3, name=c, nickname=cc]
Hero [no=4, name=d, nickname=dd]
Hero [no=2, name=b, nickname=bb]
Hero [no=1, name=a, nickname=aa]
Hero [no=2, name=b, nickname=bb]
这篇关于查找单链表倒数第k个节点(算法入门)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20软考培训入门指南:轻松掌握软考必备技能
- 2024-11-20软考认证入门教程:轻松掌握IT认证考试
- 2024-11-20软考试题解析与备考指南
- 2024-11-20软考选择题解题技巧入门指南
- 2024-11-20软考资料入门详解与备考指南
- 2024-11-20信息系统项目管理师入门指南
- 2024-11-20信息系统项目管理师(软高)入门指南
- 2024-11-20如何轻松获取你的第一份证书
- 2024-11-20如何轻松获取高级证书:初级用户的简单指南
- 2024-11-20如何轻松获取国家级证书:初级用户入门指南