慕課網玩轉資料結構課程之陣列

zybing發表於2021-09-09

陣列是java語言中支援的一種語法,平時我們只需要知道怎麼用就行了,而資料結構這門課就是告訴我們資料在陣列中是以怎樣的一種形式進行儲存,它的增、刪、改、查又是如何實現的,這就是知其然也知其所以然,這裡主要講一下個人學習之後的一些理解,也是加深印象的一種手段。

主要說一下增、刪、改、查幾個方法的實現,我們新建一個類,維護兩個成員變數,一個是就是java的陣列,一個是size,size表示陣列中實際存放的元素個數。在實現中,size主要是指向陣列中下一個可以存放元素的位置

add(int index,E e)方法:
有幾種,比如在陣列的第一個位置新增元素,還有在陣列最後的位置新增元素,
這個最後的位置不是指陣列容量中最後的位置,而是說size指向的索引位置,
還有在指定的位置新增元素,我們說說最後一種,在指定位置新增元素。

比方我們現有一個陣列 [0,1,2,3,4,5,6,7,8,9] 這個時候,我想在索引為0的位置新增一個元素100,那具體是怎麼實現呢?我們需要把這個陣列中每個元素的位置都往後挪一個位置,應該先從最後一個元素,也就是9開始,9的索引也是9,那麼就把9挪到索引為10的位置上,依次類推,整個流程走完之後陣列應該是這樣子的 【0,0,1,2,3,4,5,6,7,8,9】,然後再把索引為0的位置的元素給替換成100,結果應該是【100,0,1,2,3,4,5,6,7,8,9】,這個時候我們的新增操作就已經完成了,維護一下size,size進行++

remove(int index)方法:
和add()一樣,也有幾種形式,頭部刪除,尾部刪除,任意位置進行刪除,實現思路其實跟add()是相反的,首先我們要找到要刪除位置索引的後一個位置,比如你要刪除索引為3的元素,那麼你這個時候應該找到索引為4的位置,然後用索引為4的元素往前挪一位,覆蓋原先索引為3的元素,依次類推,直到陣列中最後一個元素也往前挪了一位,這個時候,原先索引為3的元素也就不存在了,我們刪除操作也就完成了,維護一下size,進行size–操作就OK了。

還有一個刪除陣列中存在的所有相同的元素:
removeAllElement(E e);
這個方法在課程中並沒有給出具體的實現的程式碼,而是讓我們自己去思考寫出,我相信買了這門課程的同學應該大部分都自己實現了這個方法,可能每個人實現的方式都不一樣,我經過自己的思考,也是實現了這個方法的,主要思路就是:
先統計出這個元素在陣列中出現的次數,然後根據這個次數迴圈進行刪除,我貼一下程式碼:

public void removeAllElement(int e) {
		int count = findAll(e);
		for(int i = 0 ; i < count ; i ++) {
			removeElement(e);
		}
	}
public int findAll(int e) {//這個方法進行元素出現次數的統計
		int count = 0 ;
		for(int i = 0 ; i < size ; i++) {
			if(data[i] == e)
				count ++ ;
		}
		return count;
	}
//這個方法是根據使用者傳來的元素,進行查詢,如果陣列存在這個元素就進行刪除
public void removeElement(int e) {
		int index = find(e);
		if(index != -1) 
			remove(index);
	}

哇!!!突然發現老師錄製影片是真的好不容易,而且還有大量的ppt動畫演示效果,還要組織語言,如何更加通俗易懂,我就打了這麼點東西,都感覺花費好長的時間,主要是想著怎麼組織語言,雖然我不是講課,hh,但是萬一有人看呢,我希望別人看的懂啊,以後我自己再來看,我也希望自己能看懂,不過我覺得我還是說的挺亂的,不管了!!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/855/viewspace-2822276/,如需轉載,請註明出處,否則將追究法律責任。

相關文章