2017-04-21 53 views
0

我有一個非常尷尬和簡單的疑問。我正在Java中實現Linklist。 和顯示器()函數即使被調用後也是不打印任何東西。該函數在Linklist類中,但是當我調用函數時,沒有任何反應。即使是System.out.println(「Display」)行也不行。在LinkList實現中調用函數後沒有運行

//Link class 
class Link 
{ 
    String name; 
    Link next; 
    Link(String name) 
     { 
     this.name=name; 
     next = null; 
     } 
} 
//Linklist class 
class Linklist 
{ 
    Link first; 
    Linklist() 
     { 
     first=null; 
     } 

public void addLinks(String name) 
{ 
    Link search=first; 
    if(first==null) 
    { 
     Link head = new Link(name); 
     first=head; 
    } 
    else 
    { 

     while(search.next!=null) 
     { 
     search.next=search; 
     } 
     Link newlink = new Link(name); 
     search.next = newlink; 
    } 
} 
//This function is not working properly. 
public void display() 
{ 

    System.out.println("Display"); 
    Link search=first; 

    while(search.next==null) 
    { 
     System.out.println(search.name); 
     search.next=search; 
    } 
} 
} 

public class p1 { 

public static void main(String args[]) 
{ 
    Linklist ls = new Linklist(); 
    ls.addLinks("Kanha"); 
    ls.addLinks("lal"); 
    ls.addLinks("Mishra"); 
    ls.display(); 
} 

} 
+0

任何異常??只是在添加任何節點之前嘗試調用ls.display()。看看它是否工作.. ?? –

回答

1

這是因爲有永無止境的循環(在addLinks()display()方法),所以它永遠不會打印任何東西的機會:

while(search.next!=null) 
{ 
    search.next=search; 
} 

你大概的意思是寫

search = search.next; 

另外,display()中的while循環的條件應該代替

while(search.next==null) 

search.next != null 

(但你必須打印之前的第一個元素的內容...)

+0

非常感謝!更正了兩者並且工作。 –

+0

@KanhaiyaMishra,沒問題。隨時接受答案,所以你的問題不會出現未答覆。 (你會得到積分!) – radoh

+0

當然,我是新的,所以沒有知道,btw接受了你的答案。 :) –