有关java的白痴问题,希望大神回答

问题描述

有关java的白痴问题,希望大神回答

Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.

Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become 1 -> 2 -> 4 after calling your function.

/**

  • Definition for singly-linked list.
  • public class ListNode {
  • int val;
  • ListNode next;
  • ListNode(int x) { val = x; }
  • }
    */
    public class Solution {
    public void deleteNode(ListNode node) {
    node=node.next;
    }
    }
    不明白为什么这么赋值不可以。可不可以有大神系统的从原理讲解一下。

解决方案

可以直接赋值的,因为你的ListNode的成员变量都是default权限即包内访问的,只要你的ListNode和Solution类在同一个包里面就可以了。
你的删除方法有问题,先要查找到待删除节点,然后再删除。修正你的Solution代码如下:

 public class Solution {
    public void deleteNode(ListNode list,ListNode node) {
        //空链表
        if(node==null||list==null||list.getNext()==null){
            return ;
        }

        //查找node节点
        ListNode curNode = list;
        ListNode preNode = null;
        ListNode next = list.next;
        while(curNode!=null){
            if(curNode.val==node.val){//找到
                System.out.println("找到待删除对象了。"+node.val);
                break;
            }
            preNode = curNode;
            curNode = next;
            next = next.next;
        }

        //删除node节点
        if(preNode==null){
            //第一个元素删除操作直接修正list为next:curNode-next
            list = next;
        }else{
            //删除中间节点中间:preNode-curNode-next
            preNode.next = next;
        }
    }

    public void printListNode(ListNode list){
        ListNode node = list;
        while(node!=null){
            System.out.println(node.val);
            node = node.next;
        }
    }

    public static void main(String[] args) {
        ListNode n1 = new ListNode(1);
        ListNode n2 = new ListNode(2);
        ListNode n3 = new ListNode(3);
        ListNode n4 = new ListNode(4);
        n1.setNext(n2);
        n2.setNext(n3);
        n3.setNext(n4);
        n4.setNext(null);
        Solution s = new Solution();
        s.printListNode(n1);
        s.deleteNode(n1, n3);
        s.printListNode(n1);
    }
}

Ok,测试结果

 1
2
3
4
找到待删除对象了。3
1
2
4

解决方案二:

一个是对象的属性,一个是对象,怎么赋值呢

解决方案三:

你class的成员怎么可以是自己class类型的呢

解决方案四:

线性连表问题,你先把定义搞懂

解决方案五:

楼主应该是想实现一个链表吧,但是感觉楼主你的问题没有描述清楚,最好把完整代码,完整报错信息都贴出来。

解决方案六:

补充:ListNode类提供next的get/set方法:

    public ListNode getNext(){
        return next;
    }

    public void setNext(ListNode next) {
        this.next = next;
    }
时间: 2024-11-08 19:09:19

有关java的白痴问题,希望大神回答的相关文章

c++函数的直接返回和用引用返回有什么区别,希望大神回答具体点

问题描述 c++函数的直接返回和用引用返回有什么区别,希望大神回答具体点 #include <stdio.h> static void func(int i_SrcNum, int &i_result) { i_result = i_SrcNum; return ; } static int func(int i_SrcNum) { return i_SrcNum; } int main(int argc, char **argv) { int a = 0; int b = 100;

java IO 文件操作 希望大神解惑

问题描述 如何替换文件中的一行字符串?(也可以是如何在某非结尾行添加数据)已知条件:1:每一行的内容是唯一可识别的2:替换的字串Astr.length()是不确定的,即假设替换字串为Astr,被替换字串为Bstr,以下情况都有可能存在:Astr.length()<Bstr.length()Astr.length()==Bstr.length()Astr.length()>Bstr.length()3:解决方案语言随意,最好java吧....其它的语言希望有讲解~~最好满足下列要求:1:从头到尾

cocos2d x-Cocos2d-X3.0引入头文件的一个小问题(希望大神帮助)

问题描述 Cocos2d-X3.0引入头文件的一个小问题(希望大神帮助) 假如我现在有一个Player.h的头文件 #include "Player.h"和直接class Player导入有什么区别 问什么我的有的时候#include "Player.h"这样导入会报 (error C2011: "Player":"class"类型重定义)错误 希望大神回答 解决方案 说明你的代码有变量冲突,具体看下错误的行.用命名空间区分下

java eclipse 文件输入路径问题!!已经快抓狂!希望大神解救!!!!

问题描述 java eclipse 文件输入路径问题!!已经快抓狂!希望大神解救!!!! 路径老无效怎么回事!!!! 解决方案 试试这个public class CopyFile { public static void main(String[] args) throws Exception { String path=""E:1.doc""; String path1=""F:sae.doc""; File file=ne

代码-问一个JAVA的基础问题,希望大神们帮忙解惑。

问题描述 问一个JAVA的基础问题,希望大神们帮忙解惑. 有一段如下的代码,有几个疑惑: 1.定义了一个final的test1和一个static里面的test1,为什么定义2个test1不会有问题? 2.为什么在一个类中直接写static{ },这个是什么原理? 3.还有什么类似static{ }这样的写法?是什么原理? public class MyOwenTest{ public static final String test1 = "a"; static{ String tes

关于Java String数组的问题希望大神解惑

问题描述 关于Java String数组的问题希望大神解惑 在一个抽象类类中有这么一句话protected String[] msg = null;public AbstractService(String msg) { this.msg = msg.split(Param.SPACE);//以空格为分隔符进行分割成数组 }没有为msg这个String数组赋值,然后有一个子类继承这个抽象类其中有这么几句话/** 登陆账号密码核对 */ private static final String SQ

android-Android 自己写的一个全局事件管理器,感觉还有点儿问题,提上代码,希望大神们修改修改!!!

问题描述 Android 自己写的一个全局事件管理器,感觉还有点儿问题,提上代码,希望大神们修改修改!!! import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import android.os

求大神回答 java的swing题目

问题描述 求大神回答 java的swing题目 1.创建项目Lab37,添加类MainFrame,继承自JFrame,实现ActionListener接口. 2.添加以下成员属性 a)JTree类型的treeDir b)String类型的dirName c)JSplitPane类型的sp d)JTable类型的fileInfo 3.构造方法 a)设置标题为"文件信息查看器" b)创建工具栏,并添加一个"打开"按钮.注册按钮事件监听对象为this c)构造一个只有一个

tomcat 404-web程序运行不出来啊 希望大神指导啊

问题描述 web程序运行不出来啊 希望大神指导啊 具体问题如下 2014-7-23 10:21:36 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.22. 2014-7-23 10:21:37 org.apache.catalina.core.AprLifecycleListener init 信息: APR capabilities