您的想法是在java數組(具有固定大小)上實現「可調整大小」數組。該固定陣列中的第一個nElem
元素是您的邏輯陣列。現在,你希望能夠設置和刪除元素,並從這個邏輯陣列:
[00] [01] [02] [03] [04] [05] [06] [07] [08] [09] ... [99] // physical array
[00] [01] [02] [03] [04] [05] [06] [07] [08] // logical array, nElem = 9
Insert '99' at (logical) position 04
[00] [01] [02] [03] [99] [04] [05] [06] [07] [08] // nElem = 10
Delete value at (logical) position 03
[00] [01] [02] [99] [04] [05] [06] [07] [08] // nElem = 9
的Java數組的大小仍然是100(它是固定的),邏輯數組的大小(nEleme)有每次插入和移除操作後都要進行調整。
如果插入元素,則必須將某些元素「向右移動」(並增加nElem)。你需要一個for循環和一個計數器(j
)。如果你想刪除一個元素,你必須將元素「左移」到另一個元素,並且你需要一個計數器。
爲什麼我們用j和nElems來搜索一個數組。
要搜索的(未分類的)收集一個項目(陣列設置,..)你必須看看每個元素,也許從索引= 0至指數=(nelem個-1 )。如果當前位置的值與您的搜索條件匹配(例如:is-equal-to),則可以中斷搜索。 j
存儲這個實際的指數,nElem
(邏輯)陣列,(nElem-1)
最後一個元素在此(邏輯),數組的索引)
爲什麼我們再次分配J確定K中缺失的大小?我們不能從j本身刪除它嗎?
僅供參考。這也可以工作,但很難理解。
for(j = 0; j < nElems; j++) {
if(arr[j] == searchKey) {
break;
}
}
for(;j < nElems-1; j++) { // note the missing initialzing value for the loop
arr[j] = arr[j+1];
}
是的神。一些簡單的格式化將使這一切更容易被吞下。 – skaffman 2010-11-15 13:16:27
已經做到了,先生 – theband 2010-11-15 13:18:47
不,我*已經做到了 – 2010-11-15 13:20:47