當前位置:首頁 » 編程語言 » c語言的刪除數組
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言的刪除數組

發布時間: 2023-05-24 20:20:28

c語言數組元素的刪除與增加。

C語言中的數組本質上是在計算機內存中分配的連續空間。

如果需要對元素進行插入和刪除,並不能直接將內存中為該數組分配的空間進行插入/新增和刪除,而是只能通過數據復制的方式將本來不在這個位置的元素進行移動,看起來像是元素的前移和後移。

舉個例子吧:整型數組(1, 2, 3, 4, 5),如果要把2刪除,那麼可以將3,4,5分別向前移動,變成(1, 3, 4, 5, 5)。由於數組長度分配以後不會變化,因此最後一個多餘的5實際上並不能刪掉,它只是表示無意義的位置。因此對於編程人員來講,需要另一個參數來記錄這個數組中你認為有用的元素是前多少個。

值得注意的是,如果數組長度不足以保存新的元素時,是無法動態地增加數組長度的。如果非要這么做,必須要在數組分配時保證數組大小足夠大。這也就是一些新手經常將數組長度設置為1000,10000的原因。

回到這個問題:

//預定義的數組,長度為20
intarray[20]={0};
//數組當前有效長度
intarrayLen=0;

//如果不是全局數組,則需要將數組指針和數組長度指針傳入進行修改
voidinsertArray(intnewElement,intindex)
{
//這里沒有做數組長度的檢驗,你需要自己完成

inti;
for(i=arrayLen++;i>index;)
array[i--]=array[i-1];//後移

array[index]=newElement;
}

voiddeleteArrayElement(intindex)
{
for(;index<arrayLen;)
array[index++]=array[index+1];//前移。要刪除的位置會被直接覆蓋

arrayLen--;
}

㈡ C語言中刪除一個數組元素

一般的數組元素無法刪除,只能將值改變為另一個特定的值,然後發現這個值就直接轉向下一個元素.

用鏈表可以刪除表中的一個結點.

㈢ c語言:從數組中刪除數據怎麼做

#include<stdio.h>
#define N 10
void main( )
{
int a[N] , num ,i , *p , n=N;
int j;

/*輸入N個數到數組a中;*/
for(i=0;i<n;i++)
{
scanf(「%d」,&num);
a[i]=num;
}

/*在數組a中刪除指定的數num;*/
for(i=0;i<n;i++)
{
if(a[i] == num)
{
//a[i]=a[n];//如果不保留原數組里的順序,此一句即可代替下邊2行語句,同時省掉變數j

for(j=i;j<n-1;j++)
a[j]=a[j+1];

n--;
}
}

/*輸出刪除了num後的數組a;*/
for(i=0;i<n;i++)
printf("%d ",a[i]);

getchar();
}

㈣ C語言,刪除數組元素

void main()
{
int i,j,n;
int a[10];
int k=0; //記錄刪除數據的個數
printf("請輸入需要刪除的數:\n");
scanf("%d",&n);
printf("請輸入10個元素的數組: \n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for (i=0;i<10;i++)
if (a[i]==n)
{
for (j=0;i+j<9;j++)
a[i+j]=a[i+j+1];
k++;//刪除數據的個數加1
a[10-k] = 0; //清除最後一個已經前移過的數據
}

for (i=0;i<10-k;i++)//輸出剩餘的數據,後面的數據為0代表已經被刪除的無意義數據,不必再輸出了。
printf("%5d",a[i]);
}

㈤ C語言里刪除數組怎麼刪除

你的數組是是一塊連續的內存,不能直接delete其中的一個,而且它還不是new出來的,更不能delete了。。。
如果你非要實現刪除一個元素的效果的話,建議你使用stl里的vector,作用跟數組差不多,刪除的時候用erase()就可以了,不過這樣vector會把之後的所以元素遷移,影響效率。最好的方法是自己寫個單鏈表來存你的數據,要實現你的刪除,就刪除個節點好了。

㈥ C語言中怎麼刪除數組中的一個元素

#include "stdio.h"
int main()
{ int a[10],x;//x是要刪除數組元素的下標
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]); //輸入10個數據放在數組中
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("請輸入要刪除元素的下標值:\n");
scanf("%d",&x); //輸入要刪除的數組元素的下標
for(i=x;i<10;i++)
a[i]=a[i+1];
for(i=0;i<9;i++) //因為刪除了一個元素,所以有9個元素
printf("%d ",a[i]);

}

㈦ 用c語言函數刪除數組中的數據

既然是數組,表示數據為線性陣列了,想刪除其中一個數據,是不可能的,只能用該位置以後的數據整體平移一個位置覆蓋當前位置。例如:數組數據 1 2 3 4 5 6 7,想刪除3,那麼得到的新數組為1 2 4 5 6 7,其中 4 5 6 7 數據的位置相對原始數組位置整體平移減小1。
當然想是想快速刪除數據,可以考慮使用數據鏈表,對數組單鏈即可

㈧ c語言數組元素的刪除

對於數組刪除,一般就是使用後面數組元素前移的操作,來覆蓋前一元素,達到刪除的效果。。。。

例如數組a[10],要刪除a[5]這個元素,那麼只需要把後面的元素前移一位就行了,也就是a[5]=a[6],a[6]=a[7],a[7]=a[8],這樣子a[5]這個元素的內容就會被全部抹殺掉了。。。。

不過這里存在一個問題,你一個結構體數組前移的時候,如何判斷有多少個元素要前移呢。。。。

所以我的做法是在結構體裡面定義一個標示符int flag。。。。

當對這個結構體數組元素賦值時,如a[10].name="KING" 時,那麼就是說下標值為10的元素是存在的,賦完值後,來個a[10].flag=1 來標記一下。。。。

這樣做的話,我們可以進行這樣的刪除操作了,如刪除下標值為5的元素——
int i=5;
for(int j=i+1;a[j].flag==1;i++,j++)
{
a[i]=a[j];
/* 結構體數組可以直接這樣子做,它會自動把a[i]裡面的變數等於a[j]裡面對應的變數 */
}
a[i].flag=0;
/* 如果你裡面原來有10個元素,那麼刪除了其中一個,那就剩下9個,a[9]那個位置應該為空,一一把裡面的元素清空太麻煩,直接把它的標示符flag等於0,就表示該位置為空的 */