我目前正在努力刷上ADT實現,專門爲鏈表(我使用Java 5的做到這一點)的實現。代碼審查鏈接列表中添加(I,X)方法
我有兩個問題:
(1)這是實現我爲加法書面(I,X)正確和有效的?
public void add(int i, Object x) { // Possible Cases: // // 1. The list is non-empty, but the requested index is out of // range (it must be from 0 to size(), inclusive) // // 2. The list itself is empty, which will only work if i = 0 // // This implementation of add(i, x) relies on finding the node just before // the requested index i. // These will be used to traverse the list Node currentNode = head; int indexCounter = 0; // This will be used to mark the node before the requested index node int targetIndex = i - 1; // This is the new node to be inserted in the list Node newNode = new Node(x); if (currentNode != null) { while (indexCounter < targetIndex && currentNode.getNext() != null) { indexCounter++; currentNode = currentNode.getNext(); } if (indexCounter == targetIndex) { newNode.setNext(currentNode.getNext()); currentNode.setNext(newNode); } else if (i == 0) { newNode.setNext(head); head = newNode; } } else if (i == 0) { head = newNode; } }
(2)我發現這個方法非常具有挑戰性的實現。說實話,這花了我好幾天的時間。這很難承認,因爲我喜歡編程,並且認爲自己處於幾種語言和平臺的中級水平。我從13歲起就開始編程(Applesoft BASIC在Apple IIc上!)並擁有CS學位。我目前是一名軟件測試員,並計劃在某個時候成爲開發人員。所以我的問題的第二部分是:我是否在愚弄自己,這是我擅長的工作類型,還是幾乎每個人都覺得這種問題具有挑戰性?有些事情告訴我,即使經驗豐富的開發人員,面對實施這種方法,會發現它具有挑戰性。
感謝您對第二部分的反饋和建議。
@dvanaria:我認爲這個問題更適合http://codereview.stackexchange.com。 –
屬於http://codereview.stackexchange.com/ –
好的謝謝,我從來沒有聽說過codereview.stackexchange,它聽起來像一個更好的地方。我會考慮現在移動它。 – dvanaria