新的程序員在這裏,我想了解並分解下面的代碼爲刪除方法,排序鏈接列表。我在下面添加了我的理解和我不明白的評論。有人可以澄清一些不清楚的事情嗎?鏈接的列表 - 刪除方法的排序列表
在此先感謝。
/* 1 */ public void remove(E e) throws NotFoundException{
/* 2 */ Node<E> p; //declares node p
/* 3 */ // chunk below determines where to start traversing based on element value. should traverse from head if new element < pos value
/* 4 */ if(pos == head || pos.compareTo(e) >= 0){ //I do not understand 2nd equality..why?
/* 5 */ p = head; //traverse list from head
/* 6 */ }else{
/* 7 */ //traverse list from pos
/* 8 */ p = pos;
/* 9 */ }
/* 10 */ for(;p.next!=null && p.next.compareTo(e)<0; p = p.next); //nothing to initialize?
/* 11 */ //e not found in the list
/* 12 */ if(p.next == null || p.next.compareTo(e) > 0){
/* 13 */ throw new NotFoundException();
/* 14 */ }
/* 15 */ if(p.next == pos){
/* 16 */ //if node to be deleted is pos, update pos to head
/* 17 */ pos = head;
/* 18 */ }
/* 19 */ p.next = p.next.next; //delete node
/* 20 */ }
我編輯了你的文章,使語法突出顯示工作,但它仍然嚴重格式化,並沒有樂趣閱讀。 – yankee
我修正了格式。 –