[原创]trend趋势的笔试题:编程 妈的,我看错题目了,我以为reverse方法会为一个翻转后的链表,不看错就更简单 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 class Node{ private Object data; private Node next; public void setData(Object data){ this.data=data; } public void setNext(Node next){ this.next=next; } public Object getData(){ return data; } public Node getNext(){ return next; } //原题有2个getter,2个setter,我改为public的 public Node(Object d,Node n){ data=d;next=n; } public void print(){ System.out.println("Node:"+this+",data:"+getData()); }}public class SingleLinkedList{ private Node head; public void setHead(Node head){ this.head=head; } public Node getHead(){ return head; } public SingleLinkedList(){ head=null; } public void reverse(){ //请实现此方法 if (null==head) return; Node temp1=head; Node temp2=temp1.getNext(); head.setNext(null); while(null!=temp2){ head=temp2; Node temp3=temp2.getNext(); temp2.setNext(temp1); temp1=temp2; temp2=temp3; } } public static void main(String[] args){ SingleLinkedList sl=new SingleLinkedList(); Node node=new Node("only one",null); sl.setHead(node); System.out.println("Oraginal!"); test(sl); sl.reverse(); System.out.println("After reverse!"); test(sl); Node begin=new Node("one",null); Node temp=begin; node=new Node("two",null); begin.setNext(node); begin=node; node=new Node("three",null); begin.setNext(node);// begin=node; sl.setHead(temp); System.out.println("Oraginal!"); test(sl); sl.reverse(); System.out.println("After reverse!"); test(sl); } public static void test(SingleLinkedList sl){ Node node=sl.getHead(); while(null!=node){ node.print(); node=node.getNext(); } }} 楼上为什么为有这样的习惯:null!=nodenode!=null看着更舒服java语言的整形和布尔型不可以转换的 嗯,我写所有的条件语句都是把常量放前面,比如false==isOK1==inull==str免得自己犯少写=的错误,呵呵 :),比如isOK=falsei=1str=null 我把2个getter,2个setter去掉是为了编程方便,不要大家写,只要写 public void reverse就行了,可以不用setter和getter,太麻烦,也不用加其他方法,不用加main 不用getter,setter不习惯!我上面那个reverse就可以了,再写也写不出什么花样了。 嗯,我写所有的条件语句都是把常量放前面,比如false==isOK1==inull==str免得自己犯少写=的错误,呵呵 :),比如这是c++后遗症。你写i=1根本通不过编译,而且可读性更强阿 我的写法,不需要判断if (null==head)return;: public void reverse(){ //请实现此方法 Node temp,another=null; while(null!=head){ temp=head; head=temp.next;//头删除head链表 temp.next=another; another=temp;//头插入another链表 } head=another; } 在windows xp中,我的Java awt组件显示出来的中文是框框 没有方法main? 一个关于Matcher类group()方法的问题 关于JTable的2个问题 关于JAVA一些命名规则,大家补充一下。。。。。 关于最简单的正则表达式 浏览器中显示不出Applet程序? 关于 private 修饰符的用法的一点疑问 关于socket通信问题 请高手帮忙看看我的设置是否正确?请给于详细回答 请教一个判断语句的意义和作用 异常类问题
private Object data;
private Node next;
public void setData(Object data){
this.data=data;
}
public void setNext(Node next){
this.next=next;
}
public Object getData(){
return data;
}
public Node getNext(){
return next;
}
//原题有2个getter,2个setter,我改为public的
public Node(Object d,Node n){
data=d;next=n;
}
public void print(){
System.out.println("Node:"+this+",data:"+getData());
}
}public class SingleLinkedList{
private Node head;
public void setHead(Node head){
this.head=head;
}
public Node getHead(){
return head;
}
public SingleLinkedList(){
head=null;
} public void reverse(){
//请实现此方法
if (null==head)
return;
Node temp1=head;
Node temp2=temp1.getNext();
head.setNext(null);
while(null!=temp2){
head=temp2;
Node temp3=temp2.getNext();
temp2.setNext(temp1);
temp1=temp2;
temp2=temp3;
} }
public static void main(String[] args){
SingleLinkedList sl=new SingleLinkedList();
Node node=new Node("only one",null);
sl.setHead(node);
System.out.println("Oraginal!");
test(sl);
sl.reverse();
System.out.println("After reverse!");
test(sl); Node begin=new Node("one",null);
Node temp=begin;
node=new Node("two",null);
begin.setNext(node);
begin=node;
node=new Node("three",null);
begin.setNext(node);
// begin=node;
sl.setHead(temp);
System.out.println("Oraginal!");
test(sl);
sl.reverse();
System.out.println("After reverse!");
test(sl); }
public static void test(SingleLinkedList sl){
Node node=sl.getHead();
while(null!=node){
node.print();
node=node.getNext();
}
}
}
node!=null看着更舒服
java语言的整形和布尔型不可以转换的
false==isOK
1==i
null==str
免得自己犯少写=的错误,呵呵 :),比如isOK=false
i=1
str=null
我上面那个reverse就可以了,再写也写不出什么花样了。
false==isOK
1==i
null==str
免得自己犯少写=的错误,呵呵 :),比如
这是c++后遗症。你写i=1根本通不过编译,而且可读性更强阿
public void reverse(){
//请实现此方法
Node temp,another=null;
while(null!=head){
temp=head;
head=temp.next;//头删除head链表
temp.next=another;
another=temp;//头插入another链表
}
head=another;
}