所以我們有了這個任務,我們應該寫一個單獨的鏈表。我已經完成了這部分,但老師希望我們添加一個名稱爲isHealthy()的方法來測試一些條件。我在執行測試其中一個條件的代碼時遇到了問題。寫一個單獨鏈接的列表並在其上運行測試代碼
下面是類構造函數和方法isHealthy:
/**
* A singly linked list.
*
*/
public class LinkedList<T> {
private ListElement<T> first; // First element in list.
private ListElement<T> last; // Last element in list.
private int size; // Number of elements in list.
/**
* A list element.
*/
private static class ListElement<T> {
public T data;
public ListElement<T> next;
public ListElement(T data) {
this.data = data;
this.next = null;
}
}
/**
* Creates an empty list.
*/
public LinkedList() {
// TODO
first = null;
last = null;
size = 0;
}
/**
* This TEST METHOD returns true if the following invariants hold:
* <ul>
* <li> size equals the number of list elements, </li>
* *****Rest of the conditions omitted*****
* </ul>
*/
public boolean isHealthy() {
// TODO
boolean var = false;
int counter;
if(first == null && last == null) {
counter = 0;
}
else {
for(T elements :) {
counter++;
}
}
if(counter == size) {
var = true;
}
return var;
}
******Rest of code omitted******
所以基本上我需要證明大小字段等於列表中元素的個數。正如你所看到的,我試圖通過一個名爲的計數器這個本地變量來做到這一點,如果列表中沒有元素,它將被設置爲0。
如果有元素,那麼我的計劃是迭代整個列表,並在每次找到新元素時向計數器變量添加一個值。然後,我會檢查是否計數器保持與尺寸相同的值,如果它確實那麼它是正確的。
我遇到的問題是我該如何通過列表迭代當該類是List?這就是我應該寫在這裏:
for(T elements : **here**)
是否有可能遍歷列表中的類列表?
有創建鏈表的類也有'isHealthy()'方法。然後你可以在完全創建的列表中調用'isHealthy()'。你可以通過在你的列表中使用'next'變量遍歷你的類,但是如果你從列表中的一箇中間元素調用'isHealthy()',計數器將不匹配到總數 – mdewitt