这篇文章主要介绍了C语言数组添加和删除元素的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

数组不擅长插入(添加)和删除元素。数组的优点在于它是连续的,所以查找数据速度很快。但这也是它的一个缺点。正因为它是连续的,所以当插入一个元素时,插入点后所有的元素全部都要向后移;而删除一个元素时,删除点后所有的元素全部都要向前移。
插入算法

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. 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};
  5. int b[24]; //用来存放插入数字后的新数组, 因为又插入了一个值, 所以长度为24
  6. int Index; //插入值的下标, Index是“下标”的英文单词
  7. int num; //插入的值
  8. int i; //循环变量
  9. printf("请输入插入值的下标:");
  10. scanf("%d", &Index);
  11. printf("请输入插入的数值:");
  12. scanf("%d", &num);
  13. for (i=0; i<24; ++i)
  14. {
  15. if (i < Index)
  16. {
  17. b[i] = a[i]; /*循环变量i小于插入值位置Index时, 每一个元素所放的位置不变*/
  18. }
  19. else if (i == Index)
  20. {
  21. b[i] = num; //i等于Index时, 将插入值赋给数组b
  22. }
  23. else
  24. {
  25. b[i] = a[i-1]; /*因为插入了一个新的元素, 所以插入位置后的每一个元素所存放的位置都要向后移一位*/
  26. }
  27. }
  28. for (i=0; i<24; ++i)
  29. {
  30. printf("%d\x20", b[i]);
  31. }
  32. printf("\n");
  33. return 0;
  34. }

输出结果是:
请输入插入值的下标: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
删除算法

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. 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};
  5. int b[22]; /*用来存放删除数字后的新数组, 因为删除了一个值, 所以长度为22*/
  6. int Index; //要删除的值的下标
  7. int i; //循环变量
  8. printf("请输入要删除的值的下标:");
  9. scanf("%d", &Index);
  10. for (i=0; i<23; ++i)
  11. {
  12. if (i < Index)
  13. {
  14. b[i] = a[i]; /*循环变量i小于插入值位置Index时, 每一个元素所存放的位置不变*/
  15. }
  16. else
  17. {
  18. b[i] = a[i+1]; /*删除值后面的元素都往前移一位, 要删除的值直接被覆盖*/
  19. }
  20. }
  21. for (i=0; i<22; ++i)
  22. {
  23. printf("%d\x20", b[i]); // \x20表示空格
  24. }
  25. printf("\n");
  26. return 0;
  27. }

输出结果是:
请输入要删除的值的下标: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

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a[10] = { 5, 9, 11, 16, 24, 34, 37, 49, 51, 61 };
  5. int i = 0,n=0,k=0;
  6. char get;
  7. for (i = 0; i < 10; i++)
  8. printf("%3d", a[i]);
  9. printf("\n");
  10. printf("请输入需要进行的操作(插入‘I',删除‘D')\n");
  11. get = getchar();
  12. getchar();
  13. if (get=='D')
  14. {
  15. printf("请输入要删除的整数:\n");
  16. n = getchar();
  17. getchar();
  18. n -= 48;
  19. for (i = 0; i < 10; i++)
  20. {
  21. if (a[i]==n)
  22. {
  23. for (; i < 10; i++)
  24. {
  25. a[i] = a[i + 1];
  26. }
  27. a[9] = 0;
  28. break;
  29. }
  30. }
  31. for (i = 0; i < 9; i++)
  32. printf("%3d", a[i]);
  33. printf("\n");
  34. }
  35. printf("请输入需要进行的操作(插入‘I',删除‘D')\n");
  36. get = getchar();
  37. getchar();
  38. if (get='I')
  39. {
  40. printf("请输入要插入的整数:\n");
  41. scanf_s("%d", &n); //注意陷阱,不能用getchar(),因为13其实是两个字符,回车之后,n只吸收了‘1',所以只能用scanf_s().
  42. for (i = 0; i < 10; i++)
  43. {
  44. if (a[i] < n&&n < a[i + 1])
  45. {
  46. k = i;
  47. for (i = 8; i > k; i--)
  48. {
  49. a[i+1] = a[i];
  50. }
  51. a[k+1] = n;
  52. break;
  53. }
  54. }
  55. for (i = 0; i < 10; i++)
  56. printf("%3d", a[i]);
  57. }
  58. return 0;
  59. }

到此这篇关于C语言数组添加和删除元素的实现的文章就介绍到这了

更多相关文章

  1. Android(安卓)SQLite详解
  2. Android消息机制---MessageQueue的工作原理
  3. Android(安卓)Media Recorder录音播放源代码
  4. Android(安卓)源码编译
  5. Android(安卓)划出一个半透明的PopupWindow
  6. 【北亚数据恢复】服务器误删除卷导致raid5阵列数据丢失的数据恢
  7. android xml本地数据弹窗多选
  8. android操作通讯录的联系人
  9. android 创建快捷方式 删除快捷方式 不重复判断快捷方式

随机推荐

  1. JAVA面向对象基础
  2. JAVA生成带LOGO的二维码
  3. Java 编程下的同步代码块(售票员)
  4. 如何指定休眠连接映射?
  5. 在扑克游戏中显示卡片的图像
  6. JavaFX窗口自适应
  7. JAVA实现二进制和16进制之间的互相转换,8
  8. Java学习之面向对象三
  9. java微信小程序解密AES/CBC/PKCS7Padding
  10. 包含带标记的值的XML属性文件