int b;
int a[5] = { 1, 2, 3, 4, 5 };
scanf_s("%d",&b);
int r = 0;
int i;
for ( i = 0; i<5; i++){
if (b == a[i]){//要刪除的數據
a[i] = r;
}
else{
printf("%d\n",a[i]);
}
}//這樣的話確實能刪除一個數,但是如果我真的想把數值0膚賦值給數組中的元素呢?怎麼辦?
應該不算刪除數組元素,只是把要刪除的元素賦值為0值了
if (b == a[i]){//要刪除的數據
a[i] = r;
}
輸出顯示是,輸出了所有不需要刪除的元素,這樣從輸出顯示來看貌似刪除數據,但內存中數據仍存在,占有內存空間,只不過此時值被修改為0。
對數組,或者順序空間元素刪除,一般需要數據搬移,需要把後面的數據往前搬移,覆蓋刪除的空間,這樣使內存空間緊湊,不至於零散碎片化。正是由於搬移的原因,有時數據存儲采用鏈表結構,而不采用順序表~