C語言數(shù)組添加和刪除元素的實現(xiàn)
數(shù)組不擅長插入(添加)和刪除元素。數(shù)組的優(yōu)點(diǎn)在于它是連續(xù)的,所以查找數(shù)據(jù)速度很快。但這也是它的一個缺點(diǎn)。正因為它是連續(xù)的,所以當(dāng)插入一個元素時,插入點(diǎn)后所有的元素全部都要向后移;而刪除一個元素時,刪除點(diǎn)后所有的元素全部都要向前移。
插入算法
# include <stdio.h>
int main(void)
{
int a[23] = {1, 5, 66, 8, 55, 9, 1, 32, 5, 65, 4, 8, 5, 15, 64, 156, 1564, 15, 1, 8, 9, 7, 215};
int b[24]; //用來存放插入數(shù)字后的新數(shù)組, 因為又插入了一個值, 所以長度為24
int Index; //插入值的下標(biāo), Index是“下標(biāo)”的英文單詞
int num; //插入的值
int i; //循環(huán)變量
printf("請輸入插入值的下標(biāo):");
scanf("%d", &Index);
printf("請輸入插入的數(shù)值:");
scanf("%d", &num);
for (i=0; i<24; ++i)
{
if (i < Index)
{
b[i] = a[i]; /*循環(huán)變量i小于插入值位置Index時, 每一個元素所放的位置不變*/
}
else if (i == Index)
{
b[i] = num; //i等于Index時, 將插入值賦給數(shù)組b
}
else
{
b[i] = a[i-1]; /*因為插入了一個新的元素, 所以插入位置后的每一個元素所存放的位置都要向后移一位*/
}
}
for (i=0; i<24; ++i)
{
printf("%d\x20", b[i]);
}
printf("\n");
return 0;
}
輸出結(jié)果是:
請輸入插入值的下標(biāo):10請輸入插入的數(shù)值:22
1 5 66 8 55 9 1 32 5 65 22 4 8 5 15 64 156 1564 15 1 8 9 7 215
刪除算法
# include <stdio.h>
int main(void)
{
int a[23] = {1, 5, 66, 8, 55, 9, 1, 32, 5, 65, 4, 8, 5, 15, 64, 156, 1564, 15, 1, 8, 9, 7, 215};
int b[22]; /*用來存放刪除數(shù)字后的新數(shù)組, 因為刪除了一個值, 所以長度為22*/
int Index; //要刪除的值的下標(biāo)
int i; //循環(huán)變量
printf("請輸入要刪除的值的下標(biāo):");
scanf("%d", &Index);
for (i=0; i<23; ++i)
{
if (i < Index)
{
b[i] = a[i]; /*循環(huán)變量i小于插入值位置Index時, 每一個元素所存放的位置不變*/
}
else
{
b[i] = a[i+1]; /*刪除值后面的元素都往前移一位, 要刪除的值直接被覆蓋*/
}
}
for (i=0; i<22; ++i)
{
printf("%d\x20", b[i]); // \x20表示空格
}
printf("\n");
return 0;
}
輸出結(jié)果是:
請輸入要刪除的值的下標(biāo):5
1 5 66 8 55 1 32 5 65 4 8 5 15 64 156 1564 15 1 8 9 7 215
實例
37, 49, 51, 61。設(shè)計程序?qū)?shù)組中的數(shù)據(jù)實現(xiàn)一次刪除及插入操作:
利用getchar()函數(shù)接收鍵盤輸入:
● 當(dāng)輸入字符'D'時,接收鍵盤輸入一個數(shù)組中存在的整數(shù)n,并對數(shù)組中存在的該整數(shù)進(jìn)行刪除,要求刪除后的數(shù)組各元素仍按照從小到大的順序排列。
要求:不使用冒泡法或選擇法實現(xiàn)刪除數(shù)據(jù)后的排序操作。
● 當(dāng)輸入字符'I'時,接收鍵盤輸入一個數(shù)組中不存在的整數(shù)m,并將該整數(shù)m插入到數(shù)組中,要求插入后的數(shù)組各元素仍按照從小到大的順序排列。
要求:不使用冒泡法或選擇法實現(xiàn)插入數(shù)據(jù)后的排序操作。
樣例輸入和輸出:
數(shù)組排序后的結(jié)果為:5, 9, 11, 16, 24, 34, 37, 49, 51, 61
請輸入需要進(jìn)行的操作(插入'I',刪除'D'):D
請輸入需要刪除的整數(shù):9
刪除后的數(shù)組為:5, 11, 16, 24, 34, 37, 49, 51, 61
請輸入需要進(jìn)行的操作(插入'I',刪除'D'):I
請輸入需要插入的整數(shù):13
插入后的數(shù)組為:5, 11, 13, 16, 24, 34, 37, 49, 51, 61
#include <stdio.h>
int main()
{
int a[10] = { 5, 9, 11, 16, 24, 34, 37, 49, 51, 61 };
int i = 0,n=0,k=0;
char get;
for (i = 0; i < 10; i++)
printf("%3d", a[i]);
printf("\n");
printf("請輸入需要進(jìn)行的操作(插入‘I',刪除‘D')\n");
get = getchar();
getchar();
if (get=='D')
{
printf("請輸入要刪除的整數(shù):\n");
n = getchar();
getchar();
n -= 48;
for (i = 0; i < 10; i++)
{
if (a[i]==n)
{
for (; i < 10; i++)
{
a[i] = a[i + 1];
}
a[9] = 0;
break;
}
}
for (i = 0; i < 9; i++)
printf("%3d", a[i]);
printf("\n");
}
printf("請輸入需要進(jìn)行的操作(插入‘I',刪除‘D')\n");
get = getchar();
getchar();
if (get='I')
{
printf("請輸入要插入的整數(shù):\n");
scanf_s("%d", &n); //注意陷阱,不能用getchar(),因為13其實是兩個字符,回車之后,n只吸收了‘1',所以只能用scanf_s().
for (i = 0; i < 10; i++)
{
if (a[i] < n&&n < a[i + 1])
{
k = i;
for (i = 8; i > k; i--)
{
a[i+1] = a[i];
}
a[k+1] = n;
break;
}
}
for (i = 0; i < 10; i++)
printf("%3d", a[i]);
}
return 0;
}
到此這篇關(guān)于C語言數(shù)組添加和刪除元素的實現(xiàn)的文章就介紹到這了,更多相關(guān)C語言數(shù)組添加和刪除元素內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP代碼實現(xiàn)自動清除替換ACCESS(MDB)數(shù)據(jù)庫的日文字符的
我們都知道ACCESS是ASP的親密伙伴。因為兩種最簡單的東西碰在一起總能迸發(fā)出火花。 然而,當(dāng)我們過濾不嚴(yán)格的時候經(jīng)常出現(xiàn)日文字符,這個時候搜索之后就會出現(xiàn)日文溢出。2008-06-06
asp 正則實現(xiàn)清除html文本格式的函數(shù)代碼
正則匹配(正則表達(dá)式)模式進(jìn)行數(shù)據(jù)匹配替換2010-03-03
使用ASP實現(xiàn)網(wǎng)站的“目錄樹”管理的代碼
使用ASP實現(xiàn)網(wǎng)站的“目錄樹”管理的代碼...2007-09-09
asp下實現(xiàn)代碼的“運(yùn)行代碼”“復(fù)制代碼”“保存代碼”功能源碼
asp下實現(xiàn)代碼的“運(yùn)行代碼”“復(fù)制代碼”“保存代碼”功能源碼...2007-06-06
asp中判斷服務(wù)器是否安裝了某種組件的函數(shù)
檢查是否存在系統(tǒng)組件或組件是否安裝成功,方便繼續(xù)的操作。給用戶更好的信息指示。2010-12-12

