IMmicheal 2016-04-02 10:09 采纳率: 33.3%
浏览 1446

寻找一个单向链表的中项,如果存在两个则返回前一个

import javax.naming.spi.DirStateFactory.Result;

public class LinkList {
//头结点
Link first;
//单链表构造函数
public LinkList(){
first = null;
}
//判断单链表是否为空
public boolean isEmpty(){
return (null==first);
}
//在单链表头插入新结点
public void insertFirst(Integer value, Integer integer){
Link newLink = new Link(value);
newLink.next = first;
first = newLink;
}
//删除单链表头
public Link deleteFirst(){
Link result = first;
first = first.next;
return result;
}
//显示链表
public void display(){
Link current = first;
while(null!=current){
current.display();
current = current.next;
}
System.out.println("");
}
//计算单链表长度
public int getLength(){
int result = 0;
Link current = first;
while(null!=current){
result++;
current = current.next;

 }
 System.out.println("长度: "+result);
 return result;

}

private class Link{
long lvalue;
Link next;
//结点构造函数
public Link(long value){
lvalue = value;
next = null;
}
//显示结点
public void display(){
System.out.print(lvalue+" ");
}
public long length(){
return this.length( );
}

public long length(Link node){
    if(node==null)
        return 0;
    else if(node.next==null)
        return 1;
    else 
        return 1+this.length(node.next);
}

}
public static void main(String[] args) {
// TODO Auto-generated method stub
//测试单链表
LinkList linklist = new LinkList();
int a [] = {100,200,300};
for(int i=0;i<a.length;i++){
linklist.insertFirst(a[i],new Integer(i+1));
}

linklist.display();
linklist.getLength();
}
}

这个是我的代码,能输出链表的长度,我的思路是循环一遍链表,找到中间项,或者是看网上很多人说的设置两个指针。
我想用大家说的指针方法,一个指针步数2 一个指针步数为1 ,可是我不会java指针的设置,能不能教我一下,谢谢大家!

  • 写回答

1条回答

  • 毕小宝 博客专家认证 2016-04-02 12:07
    关注

    java虽然没有指针这种说法,但是本质上是通过next属性来完成遍历的,可以定义两个变量,一个存储当前节点,一个存储其后继节点:
    你的代码里面已经使用了啊,getLength里面这种就是遍历链表的方式了。

    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况