C語言數組添加和刪除元素的實現
數組不擅長插入(添加)和刪除元素。數組的優點在於它是連續的,所以查找數據速度很快。但這也是它的一個缺點。正因為它是連續的,所以當插入一個元素時,插入點後所有的元素全部都要向後移;而刪除一個元素時,刪除點後所有的元素全部都要向前移。
插入算法
# 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]; //用來存放插入數字後的新數組, 因為又插入瞭一個值, 所以長度為24 int Index; //插入值的下標, Index是“下標”的英文單詞 int num; //插入的值 int i; //循環變量 printf("請輸入插入值的下標:"); scanf("%d", &Index); printf("請輸入插入的數值:"); scanf("%d", &num); for (i=0; i<24; ++i) { if (i < Index) { b[i] = a[i]; /*循環變量i小於插入值位置Index時, 每一個元素所放的位置不變*/ } else if (i == Index) { b[i] = num; //i等於Index時, 將插入值賦給數組b } else { b[i] = a[i-1]; /*因為插入瞭一個新的元素, 所以插入位置後的每一個元素所存放的位置都要向後移一位*/ } } for (i=0; i<24; ++i) { printf("%d\x20", b[i]); } printf("\n"); return 0; }
輸出結果是:
請輸入插入值的下標:10請輸入插入的數值: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]; /*用來存放刪除數字後的新數組, 因為刪除瞭一個值, 所以長度為22*/ int Index; //要刪除的值的下標 int i; //循環變量 printf("請輸入要刪除的值的下標:"); scanf("%d", &Index); for (i=0; i<23; ++i) { if (i < Index) { b[i] = a[i]; /*循環變量i小於插入值位置Index時, 每一個元素所存放的位置不變*/ } else { b[i] = a[i+1]; /*刪除值後面的元素都往前移一位, 要刪除的值直接被覆蓋*/ } } for (i=0; i<22; ++i) { printf("%d\x20", b[i]); // \x20表示空格 } printf("\n"); return 0; }
輸出結果是:
請輸入要刪除的值的下標: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。設計程序對數組中的數據實現一次刪除及插入操作:
利用getchar()函數接收鍵盤輸入:
● 當輸入字符’D’時,接收鍵盤輸入一個數組中存在的整數n,並對數組中存在的該整數進行刪除,要求刪除後的數組各元素仍按照從小到大的順序排列。
要求:不使用冒泡法或選擇法實現刪除數據後的排序操作。
● 當輸入字符’I’時,接收鍵盤輸入一個數組中不存在的整數m,並將該整數m插入到數組中,要求插入後的數組各元素仍按照從小到大的順序排列。
要求:不使用冒泡法或選擇法實現插入數據後的排序操作。
樣例輸入和輸出:
數組排序後的結果為:5, 9, 11, 16, 24, 34, 37, 49, 51, 61
請輸入需要進行的操作(插入’I’,刪除’D’):D
請輸入需要刪除的整數:9
刪除後的數組為:5, 11, 16, 24, 34, 37, 49, 51, 61
請輸入需要進行的操作(插入’I’,刪除’D’):I
請輸入需要插入的整數:13
插入後的數組為: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("請輸入需要進行的操作(插入‘I',刪除‘D')\n"); get = getchar(); getchar(); if (get=='D') { printf("請輸入要刪除的整數:\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("請輸入需要進行的操作(插入‘I',刪除‘D')\n"); get = getchar(); getchar(); if (get='I') { printf("請輸入要插入的整數:\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; }
到此這篇關於C語言數組添加和刪除元素的實現的文章就介紹到這瞭,更多相關C語言數組添加和刪除元素內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!