閱讀以下說明和C函數(shù),回答問題l和問題2,將解答填入答題紙的對應欄內(nèi)。
【說明】
對于具有n個元素的整型數(shù)組a,需要進行的處理是刪除a中所有的值為0的數(shù)組元素,并將a中所有的非O元素按照原順序連續(xù)地存儲在數(shù)組空間的前端。下面分別用函數(shù)CompactArr_v1和CompactArr v2來實現(xiàn)上述處理要求,函數(shù)的返回值為非零元素的個數(shù)。
函數(shù)CompactArr_vl(int a[],int n)的處理思路是:先申請一個與數(shù)組a的大小相同的動態(tài)數(shù)組空間,然后順序掃描數(shù)組a的每一個元素,將遇到的非O元素依次復制到動態(tài)數(shù)組空間中,最后再將動態(tài)數(shù)組中的元素傳回數(shù)組a中。
函數(shù)CompactArr_v2(int a[],int n)的處理思路是:利用下標i(初值為0)順序掃描數(shù)組a的每一個元素,下標k(初值為0)表示數(shù)組a中連續(xù)存儲的非0元素的下標。掃描時,每遇到一個數(shù)組元素,i就增1,而遇到非0元素并將其前移后k才增1。
【問題1】 (12分)
請根據(jù)說明中函數(shù)CompactArr_v1的處理思路填補空缺(1)~(3),根據(jù)CompactArr_v2的處理思路填補空缺(4)。
【問題2】(3分)
請說明函數(shù)CompactArr vl存在的缺點。