2017-10-21 66 views
1

我正在通過破解編碼採訪工作,我想我會實現JS 5中的所有數據結構。任何人都可以向我解釋爲什麼我的toString方法不工作?toString方法在鏈接列表實現不工作在js

謝謝!

function Node(data) { 
 
    \t this.next = null; 
 
     this.data = data; 
 
    } 
 
    
 
    Node.prototype.appendToTail = function(data) { 
 
    \t var end = new Node(data); 
 
     var n = this; 
 
     while (n.next != null) { 
 
     \t n = n.next; 
 
     } 
 
     n.next = end; 
 
    } 
 
    
 
    Node.prototype.toString = function(head) { 
 
    \t 
 
    \t console.log(head) 
 
    
 
    \t if (head == null) { 
 
     \t return "" 
 
     } else { 
 
    \t return head.data.toString() + "-> " + head.next.toString(); 
 
     } 
 
    \t 
 
    } 
 
    
 
    var ll = new Node(1); 
 
    ll.appendToTail(3); 
 
    ll.appendToTail(4); 
 
    
 
    console.log(ll.toString())

+1

「不工作」......你期望它給出什麼輸出,你得到的輸出是什麼? – chiliNUT

回答

1
function Node(data) { 
    this.next = null; 
    this.data = data; 
} 

Node.prototype.appendToTail = function(data) { 
    var end = new Node(data); 
    var n = this; 
    while (n.next != null) { 
    n = n.next; 
    } 
    n.next = end; 
}; 

Node.prototype.toString = function() { 
    var returnValue = String(this.data); 
    if (this.next) { 
     returnValue = returnValue + "-> " + String(this.next); 
    } 
    return returnValue; 
}; 

var ll = new Node(1); 
ll.appendToTail(3); 
ll.appendToTail(4); 

console.log(String(ll)) 

使用this,強似或避免這種完全地問題,不要使用原型,類,對此,呼叫等

1

toString功能需要一個參數,但你不通過它,當你調用toString

如果您要訪問的節點,所以應該在價值

Node.prototype.toString = function() { 
    var result = this.data.toString(); 
    if (this.next) { 
    result += "-> " + this.next.toString(); 
    } 
    return result; 
}