原创,转载请注明出处。https://www.cnblogs.com/yangf428/p/11254370.html

天勤例题【2-1】:

设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性
先建立一个待插入的结点,然后依次与与链表中的各结点的数据域比较大小,找到插入该结点的位置,最后插入该结点。
算法如下:

//设顺序表中的数据元素递增有序,
//试着写一算法,将x插入到顺序表上的适当位置上,
//以保持该表的有序性。
#include<stdio.h>
#include<cstring>
#define MaxSize 200
#define ElemType int
#define Status int
#define OK 1
#define ERROR 0
using namespace std; typedef struct
{
ElemType data[MaxSize];
int length;
} SqList; //定义结构体 Status initList(SqList *L)
{
L->length = ;
return ;
}//初始化顺序表 SqList createList(SqList * L, int n)
{
int startNumber, step;
printf("请输入初始值和步长:\n");
scanf("%d %d", &startNumber, &step);
for(int i=; i<n; i++)
{
L->data[i] = startNumber + (i)*step;
}
L->length = n;
return *L;
}//建造顺序表 void showList(SqList *L)
{
for(int i=; i<=L->length-; i++)
{
printf("%d ", L->data[i]);
}
printf("\n\n\n");
}//屏幕输出顺序表 Status locateList(SqList *L, ElemType e)
{
if(e <= L->data[])
return ;
if(e >= L->data[L->length - ])
return L->length;
else
{
for(int i=; i<L->length-; i++)
{
if(e > L->data[i] && e <= L->data[i+])
{
return i+;
}
}
}
}//定位某元素在数据表中的位置 Status inorderList(SqList *L, ElemType location, ElemType e)
{
for(int i = L->length-; i >= location; i--)
{
L->data[i+] = L->data[i];
}
L->data[location] = e;
L->length ++;
return OK;
}//插入指定位置的数据 int main()
{ SqList L;
initList(&L);
int n;
printf("输入顺序表的元素个数:\n");
scanf("%d",&n);
createList(&L,n);
showList(&L);
while(true){
printf("请输入插入的元素:\n");
int InputNumber;
scanf("%d",&InputNumber);
int Location=locateList(&L,InputNumber);
inorderList(&L, Location, InputNumber);
showList(&L);
} return ;
}

执行结果:

注意:一定要注意当值小于第一个、大于最后一个,还有和某个数相同的各种类似特殊情况,测试一定要全面!!

这个算法过一段时间我会更一个更简洁的。

												

设顺序表中的数据元素递增有序,试着写一算法,将x插入到顺序表上的适当位置上,以保持该表的有序性。的更多相关文章

  1. php实例根据ID删除mysql表中的数据

    在动态网站开发中,我们经常要根据ID删除表中的数据,例如用户删除帖子,就需要根据ID删除帖子.本文章向大家介绍php根据ID删除表中数据的实例,需要的朋友可以参考一下本文章的实例. php实例根据ID ...

  2. ca12a_c++顺序容器的操作5_访问容器中的数据元素

    ca12a_c++顺序容器的操作5_访问容器中的数据元素访问元素:c.back()..显示最后一个数据c.front() ..显示第一个数据c[n],n就是下标,适合vector与dequec.at( ...

  3. (笔记)Mysql命令update set:修改表中的数据

    update set命令用来修改表中的数据. update set命令格式:update 表名 set 字段=新值,… where 条件; 举例如下:mysql> update MyClass ...

  4. (最全最灵活地)利用Jxl工具包实现Excel表的内容读取 、写入(可向已有表中追加数据)

    1.引子 (1)读取 Jxl工具比较强大,可以方便地实现Excel表的读取和写入.另一款工具Poi也具有相似的功能,并且功能更多,运用也相对复杂.Poi读取Excel表内容时,需要先判断其内容格式,如 ...

  5. DataTable to Excel(使用NPOI、EPPlus将数据表中的数据读取到excel格式内存中)

    /// <summary> /// DataTable to Excel(将数据表中的数据读取到excel格式内存中) /// </summary> /// <param ...

  6. SSAS中事实表中的数据如果因为一对多或多对多关系复制了多份,在维度上聚合的时候还是只算一份

    SSAS事实表中的数据,有时候会因为一对多或多对多关系发生复制变成多份,如下图所示: 图1 我们可以从上面图片中看到,在这个例子中,有三个事实表Fact_People_Money(此表用字段Money ...

  7. SQL存在一个表而不在另一个表中的数据, 更新字段为随机时间

    --更新字段为随机时间 86400秒=1天 UPDATE dl_robot ), ,GETDATE()) )   SQL存在一个表而不在另一个表中的数据   方法一 使用 not in ,容易理解,效 ...

  8. delete表1条件是另一个表中的数据,多表连接删除(转)

    DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释: 1. delete from t1 where 条件 2.delete t1 from t1 where 条件 3. ...

  9. mysql 数据库怎样快速的复制表以及表中的数据

    1.copy表结构 SHOW CREATE TABLE runoob_tbl:(选择你要复制的表),copy 它的创建语句,执行即可创建表结构相同的表了,记得改名称哦. 2.copy表数据 选择你要插 ...

随机推荐

  1. <script> 为什么不再使用 type="text/javascript" 【问题】

    1.为什么在 <script> 标签中不需要使用 type="text/javascript" 就可以写jQuery代码 ? <head> <scri ...

  2. CSS图片Img等比例缩放且居中显示

    常用来做图片放大显示的遮罩层imgScale HTML <div id="imgScale" > <img src=""> </d ...

  3. MySQL之系系统信息函数

    1.VERSION() 用法:返回MySQL服务器的版本 举例: mysql> select VERSION(); +-----------+ | VERSION() | +---------- ...

  4. Vue下的index.html

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  5. PHP程序员的技术成长规划(转载)

    按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定 ...

  6. 大数据之路week04--day06(I/O流阶段一 之异常)

    从这节开始,进入对I/O流的系统学习,I/O流在往后大数据的学习道路上尤为重要!!!极为重要,必须要提起重视,它与集合,多线程,网络编程,可以说在往后学习或者是工作上,起到一个基石的作用,没了地基,房 ...

  7. 使用Struts2+Hibernate开发学生信息管理功能1

    第一章:Struts2与Hibernate整合 1.课程简介 2.界面原型演示 3.Struts2与Hibernate整合 4.创建实体类 5.生成实体映射文件 6.生成表结构 1.课程简介 Stru ...

  8. DNS域名解析系统介绍

    域名系统(D N S)是一种用于T C P / I P应用程序的分布式数据库,它提供主机名字和 I P地址之间的转换及有关电子邮件的选路信息.这里提到的分布式是指在 I n t e r n e t上的 ...

  9. Fastdfs集群搭建

    1.关于集群,网上说最少要三台,其实也没必要,两台就够了 2.实验环境 192.168.2.201 tracker.storage.nginx + fastdfs-nginx-module-maste ...

  10. windows builder里面的可伸缩面板

    使用 org.eclipse.wb.core.controls.flyout.FlyoutControlComposite.FlyoutControlComposite类 构造方法中传入的prefer ...