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语言数组添加和删除元素内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:C语言对数组元素进行冒泡排序的实现C语言数组元素循环右移问题及解决方法C语言中判断两数组中是否有相同的元素解决C语言数组元素循环右移的问题C语言数组元素的循环移位方法C语言找出数组中的特定元素的算法解析C语言将数组中元素的数排序输出的相关问题解决C语言输出旋转后数组中的最小数元素的算法原理与实例

  • 本文相关:
  • asp 操作cookies(包括设置[赋值]、读取、删除[设置过期时间])
  • 如何从数据库中随机取出10条记录的方法
  • asp 一些支付接口
  • 如何增加referer功能--反向链接插件
  • asp实现文件上传的方法
  • 字符批量替换程序asp服务器版
  • 简单的asp统计制作实例
  • asp中取得图片宽度和高度的类(无组件)
  • asp程序中使用断开的数据记录集的代码
  • 在.net core 中使用 fluentvalidation 进行规则验证的方法
  • c语言:编程实现在一维数组中查找、插入和删除一个元素的操作...
  • C语言数组如何将12345 添加 和删除?具体怎么写? 求大神们指...
  • c语言 数组以及指针问题:3. 编写一个程序实现在一个一维数组...
  • C语言数组的排序查找插入删除本题目的任务是编写完成整数数...
  • 求一个c语言高手用单链表实现学生管理系统,有创建、查找、删...
  • c语言编程 (在一个字符数组中输入一个字符,找到相同的就删除...
  • C语言中怎样实现对数组数据的删除、修改?
  • c语言中,在一维数组中怎么去删除一个最后一个元素,并且释放最...
  • c语言中怎样实现结构体数组中的数据插入
  • C语言数组作业-排序、查找、插入、删除
  • 在c语言中如何实现数据的添加 删除 和 查询 以及如何修改
  • c语言 数组以及指针问题:3. 编写一个程序实现在一个一维数组...
  • c语言 删除字符串中的一个字符
  • C语言单向链表的创建,输入,插入和删除的实现
  • C++动态删除数组
  • 求一个C语言程序实现以下功能,新建线性表,输入线性表,向线性...
  • C语言,请用数组作个循环队列
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全asp基础应用技巧数据库相关asp class类存储过程小偷/采集木马相关fso专题首页asp编程c语言对数组元素进行冒泡排序的实现c语言数组元素循环右移问题及解决方法c语言中判断两数组中是否有相同的元素解决c语言数组元素循环右移的问题c语言数组元素的循环移位方法c语言找出数组中的特定元素的算法解析c语言将数组中元素的数排序输出的相关问题解决c语言输出旋转后数组中的最小数元素的算法原理与实例如何从数据库中随机取出10条记录的方法asp 一些支付接口如何增加referer功能--反向链接插件asp实现文件上传的方法字符批量替换程序asp服务器版简单的asp统计制作实例asp中取得图片宽度和高度的类(无组件)asp程序中使用断开的数据记录集的代码在.net core 中使用 fluentvalidation 进行规则验证的方法推荐4款傻瓜型的asp服务器软件(关于“未指定的错误”的问题 的比错误类型:provider (0x80004005c#入门教程之listbox控件使用方法utf-8 网页不显示+utf-8网页乱码asp 日期格式化问题asp中设置session过期时间方法总microsoft jet database engine(sql查询语句通配符与access模糊查asp获取url参数的几种方法分析总用asp实现写iis日志的代码asp使用fso读取模板的代码asp下循环一行多少个asp读取日期单日期自动补零函数代码asp将excel数据导入到sqlserver的实现代码asp 采集实战代码用asp实现把文件打包成xml文件包,带解包asp下计算分页的几种方法常用asp函数集【经验才是最重要的】asp md5加密方式使用建议
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved