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语言输出旋转后数组中的最小数元素的算法原理与实例

  • 本文相关:
  • cookies 欺骗漏洞的防范方法(vbs+js 实现)
  • 最简洁的asp多重查询的解决方案
  • asp cookies操作的详细介绍与实例代码
  • asp分页时计算页面总数的几种算法小结
  • asp中格式化html函数代码 sdcms加强版
  • 身份证校验算法与asp程序
  • asp + serv-u 实现ftp的代码
  • 随机提取access/sqlserver数据库中的10条记录的sql语句
  • 服务器xmlhttp(server xmlhttp in asp)基础知识
  • 在asp里面创建guid
  • c语言:编程实现在一维数组中查找、插入和删除一个...
  • c语言数组元素的删除与增加。
  • 急!c语言对数组元素的删除,添加操作
  • C语言求完善数组的插入和删除
  • c语言数组中一个数的删除与插入
  • C语言一维数组的增,删,改,查的编程例子,要简单...
  • C语言 数组 实现删除一数组中的某指定元素。
  • C语言 数组。实现删除一数组中的某指定元素。
  • C语言的题用函数实现数组数据的增加,删除,修改,查...
  • C语言数组的删除,插入
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全asp基础应用技巧数据库相关asp class类存储过程小偷/采集木马相关fso专题首页asp编程c语言对数组元素进行冒泡排序的实现c语言数组元素循环右移问题及解决方法c语言中判断两数组中是否有相同的元素解决c语言数组元素循环右移的问题c语言数组元素的循环移位方法c语言找出数组中的特定元素的算法解析c语言将数组中元素的数排序输出的相关问题解决c语言输出旋转后数组中的最小数元素的算法原理与实例cookies 欺骗漏洞的防范方法(vbs+js 实现)最简洁的asp多重查询的解决方案asp cookies操作的详细介绍与实例代码asp分页时计算页面总数的几种算法小结asp中格式化html函数代码 sdcms加强版身份证校验算法与asp程序asp + serv-u 实现ftp的代码随机提取access/sqlserver数据库中的10条记录的sql语句服务器xmlhttp(server xmlhttp in asp)基础知识在asp里面创建guid推荐4款傻瓜型的asp服务器软件(关于“未指定的错误”的问题 的比错误类型:provider (0x80004005c#入门教程之listbox控件使用方法utf-8 网页不显示+utf-8网页乱码asp 日期格式化问题asp中设置session过期时间方法总microsoft jet database engine(sql查询语句通配符与access模糊查asp获取url参数的几种方法分析总asp下利用fso实现文件夹或文件移动改名等网上用的比较多的asp级联菜单效果代码asp中文数字验证码asp 验证输入网址是否有效并可以访问 与正asp 递归调用 已知节点查找根节点的函数15种asp技巧atom_js.asp在asp中使用js的encodeuricomponent方法microsoft jet database engine(0x800040经验几则
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved