java吧 关注:1,276,568贴子:12,792,574
  • 2回复贴,共1

java linked list 递归bug 求修改。。。

只看楼主收藏回复

import java.util.LinkedList;
public class test{
//这里应该是把list2的东西加到list1的后面
private static LinkedList append(LinkedList list1, LinkedList list2) {
if (list1 == null){
return list2;
} else{
return add(first(list1), append(rest(list1), list2));
}
}
public static void main(String[] args) {
LinkedList list1 = new LinkedList();
LinkedList list2 = new LinkedList();
list1.add("1"); list1.add("2"); list1.add("3");
list2.add("1"); list2.add("2"); list2.add("3");
printList( append(list1, list2) );
}
//添加value到一个linkedlist的前面如果list是null就新建一个list
private static LinkedList add(String value, LinkedList list) {
if(list == null){
LinkedList newList = new LinkedList();
newList.addFirst(value);
return newList;
} else{
list.addFirst(value);
return list;
}
}
//获取list的第一个值
private static String first(LinkedList list) {
if(list.size() >= 1){
return list.getFirst().toString();
}else{
return null;
}
}
//获取list的所有值但除了第一个
private static LinkedList rest(LinkedList list) {
if(list.size() >= 1){
list.removeFirst();
return list;
}else{
list = null; return list;
}
}
//打印list
private static void printList(LinkedList list) {
System.out.println(list);
}
//如果list是null就返回true 不是就返回null
private static boolean isNull(LinkedList list) {
if(list == null){
return true;
}else{
return false;
}
}
}
这个程序的输出结果是[1, 2, 3, null, 1, 2, 3] 不知道中间为啥加了个null 估计是first method和rest method的问题。。求大神修改。。



1楼2012-10-16 05:56回复
    //获取list的所有值但除了第一个
    private static LinkedList rest(LinkedList list) {
    if( list.size() >= 1 ) {
    list.removeFirst();
    return list;
    }
    else {
    list = null;
    return list;
    }
    }
    这里的 if( list.size() >= 1 ) 改成 if( list.size() > 1 )
    你这代码实在是……………… 有点绕


    IP属地:澳大利亚2楼2012-10-16 07:58
    回复
      2025-09-02 21:01:59
      广告
      不感兴趣
      开通SVIP免广告
      (稍微改了下)
      // 获取list的第一个值
      private static String first(LinkedList<String> list) {
      if (list.size() == 0)return null; // 这里最后会 return 一个 null
      return list.getFirst().toString();
      }
      // 添加value到一个linkedlist的前面如果list是null就新建一个list
      private static LinkedList<String> add(String value, LinkedList<String> list) {
      if (list == null) { LinkedList<String> newList = new LinkedList<String>(); System.out.println(value); newList.addFirst(value); //printList(newList);
      return newList; }
      printList(list);
      if(value!=null) list.addFirst(value); // 可以在添加之前判断一下
      System.out.println(value);
      return list;
      }

      


      3楼2012-10-16 09:06
      回复