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语言数组添加和删除元素内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程