class MyList
{
class Node{int data; Node next;}
private Node head;
public Node getTail( )
{
Node t=head;
if(head==null) return null;
while(t.next!=null)t=t.next; //while 不可换为if ,这里替换的话输出时不正确
return t;
}
public void add(int x)
{
Node m=new Node();
m.data=x;
Node tail=getTail();
if(tail==null) head=m;
else tail.next=m;
}
public void show()
{
Node t=head;
while(t!=null) //while 不可换为if ,这里替换的话输出时不正确
{System.out.println(t.data);
t=t.next;}
}
}
public class A21
{
public static void main(String[] args)
{
MyList a = new MyList();
a.add(3);
a.add(5);
a.add(20);
a.add(18);
a.add(9);
a.show();
}
}
3 个解决方案
#1
while和if本身就用法不同,一个是循环语句,一个是判断语句。
#2
while(t!=null) { //while 不可换为if ,这里替换的话输出时不正确
System.out.println(t.data);
t=t.next;}
}
if 只做判断,判断一次之后,便不会再回来了
while 的话,循环,直到结果为false,才跳出来
链表的结构,要一直读下去,直到读完整个链表结构,所以需要while
if的话只读一次,便跳出了
System.out.println(t.data);
t=t.next;}
}
if 只做判断,判断一次之后,便不会再回来了
while 的话,循环,直到结果为false,才跳出来
链表的结构,要一直读下去,直到读完整个链表结构,所以需要while
if的话只读一次,便跳出了
#3
if 和 while当条件不成立时,都跳过代码块执行后面的代码。
不同的是当条件成立时,if执行完代码块后继续执行后面的代码,while执行完代码块后再判断while的条件,成立就再执行代码块里的代码,直到不成立,才执行代码块后面的代码。while的代码块里如果遇到break;指令,则跳出while代码块直接执行后面的代码。
不同的是当条件成立时,if执行完代码块后继续执行后面的代码,while执行完代码块后再判断while的条件,成立就再执行代码块里的代码,直到不成立,才执行代码块后面的代码。while的代码块里如果遇到break;指令,则跳出while代码块直接执行后面的代码。
#1
while和if本身就用法不同,一个是循环语句,一个是判断语句。
#2
while(t!=null) { //while 不可换为if ,这里替换的话输出时不正确
System.out.println(t.data);
t=t.next;}
}
if 只做判断,判断一次之后,便不会再回来了
while 的话,循环,直到结果为false,才跳出来
链表的结构,要一直读下去,直到读完整个链表结构,所以需要while
if的话只读一次,便跳出了
System.out.println(t.data);
t=t.next;}
}
if 只做判断,判断一次之后,便不会再回来了
while 的话,循环,直到结果为false,才跳出来
链表的结构,要一直读下去,直到读完整个链表结构,所以需要while
if的话只读一次,便跳出了
#3
if 和 while当条件不成立时,都跳过代码块执行后面的代码。
不同的是当条件成立时,if执行完代码块后继续执行后面的代码,while执行完代码块后再判断while的条件,成立就再执行代码块里的代码,直到不成立,才执行代码块后面的代码。while的代码块里如果遇到break;指令,则跳出while代码块直接执行后面的代码。
不同的是当条件成立时,if执行完代码块后继续执行后面的代码,while执行完代码块后再判断while的条件,成立就再执行代码块里的代码,直到不成立,才执行代码块后面的代码。while的代码块里如果遇到break;指令,则跳出while代码块直接执行后面的代码。