0
下面的分隔符方法用於返回兩個單獨鏈接列表的IntLinkedBag數組。它通過調用listSplitLessGreater方法來完成此操作,並傳遞整數鏈接列表的頭引用和分離器整數值,該整數值返回一個IntNode數組,該數組包含已排序的兩個新的鏈接的整數鏈表的頭引用。分割器方法按照書面方式工作。這是我能夠實現它的唯一方法。但我知道必須有一個更簡單/更好的方法來編碼它。之間的一切// * ** * ** * *我想這個鏈接列表頭參考分配給Java中的鏈接列表對象
newLists[0].head = answer[0];
newLists[1].head = answer[1];
取代但是當我做我運行程序時收到空指針錯誤豁免。我的問題是爲什麼?以及如何編寫此代碼的正確方法?
public IntLinkedBag[] splitter(int target)
{
IntLinkedBag[] newLists = new IntLinkedBag[2];
IntNode[] answer = new IntNode[2];
answer = IntNode.listSplitLessGreater(head, target);
//**********************************
IntLinkedBag b = new IntLinkedBag();
IntLinkedBag c = new IntLinkedBag();
b.add(5);
b.head = answer[0];
newLists[0] = b;
c.add(5);
c.head = answer[1];
newLists[1] = c;
//**********************************
return newLists;
}
我更新了我的代碼,如下所示。我沒有收到任何錯誤,但現在沒有任何回報。即使測試代碼打印鏈接列表....和想法?
public IntLinkedBag[] splitter(int target)
{
IntLinkedBag[] newLists = {new IntLinkedBag(), new IntLinkedBag()};
IntNode[] answer = new IntNode[2];
answer = IntNode.listSplitLessGreater(head, target);
newLists[0].head = answer[0];
newLists[1].head = answer[1];
System.out.println(IntNode.showList(newLists[0].head)); //test code
System.out.println(IntNode.showList(newLists[1].head)); //test code
return newLists;
}
添加此代碼得到它的工作,但爲什麼這是必需的?
newLists[0].add(5); //adding a number to linked list to create a temporary head.
newLists[1].add(5); //don't know why I have to have this but its only way code works correctly
我按照上面的說明操作。任何進一步的想法? – user1371651
@ user1371651:至於你的編輯,我不能在這個特定的問題中回答這個問題(你只是在尋找一種更好的編碼方式)。您必須創建一個新頭或調用add(int)的原因完全取決於您實現「IntLinkedBag」類的方式。除非首先調用'add(int)',否則它不會返回任何東西,這也是我不能回答爲什麼沒有看到它的實現(此時會有點太多)。 – Makoto
感謝您的幫助誠! – user1371651