设顺序表中的数据元素递增有序,试着写一算法,将x插入到顺序表上的适当位置上,以保持该表的有序性。
原创,转载请注明出处。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插入到顺序表上的适当位置上,以保持该表的有序性。的更多相关文章
- php实例根据ID删除mysql表中的数据
在动态网站开发中,我们经常要根据ID删除表中的数据,例如用户删除帖子,就需要根据ID删除帖子.本文章向大家介绍php根据ID删除表中数据的实例,需要的朋友可以参考一下本文章的实例. php实例根据ID ...
- ca12a_c++顺序容器的操作5_访问容器中的数据元素
ca12a_c++顺序容器的操作5_访问容器中的数据元素访问元素:c.back()..显示最后一个数据c.front() ..显示第一个数据c[n],n就是下标,适合vector与dequec.at( ...
- (笔记)Mysql命令update set:修改表中的数据
update set命令用来修改表中的数据. update set命令格式:update 表名 set 字段=新值,… where 条件; 举例如下:mysql> update MyClass ...
- (最全最灵活地)利用Jxl工具包实现Excel表的内容读取 、写入(可向已有表中追加数据)
1.引子 (1)读取 Jxl工具比较强大,可以方便地实现Excel表的读取和写入.另一款工具Poi也具有相似的功能,并且功能更多,运用也相对复杂.Poi读取Excel表内容时,需要先判断其内容格式,如 ...
- DataTable to Excel(使用NPOI、EPPlus将数据表中的数据读取到excel格式内存中)
/// <summary> /// DataTable to Excel(将数据表中的数据读取到excel格式内存中) /// </summary> /// <param ...
- SSAS中事实表中的数据如果因为一对多或多对多关系复制了多份,在维度上聚合的时候还是只算一份
SSAS事实表中的数据,有时候会因为一对多或多对多关系发生复制变成多份,如下图所示: 图1 我们可以从上面图片中看到,在这个例子中,有三个事实表Fact_People_Money(此表用字段Money ...
- SQL存在一个表而不在另一个表中的数据, 更新字段为随机时间
--更新字段为随机时间 86400秒=1天 UPDATE dl_robot ), ,GETDATE()) ) SQL存在一个表而不在另一个表中的数据 方法一 使用 not in ,容易理解,效 ...
- delete表1条件是另一个表中的数据,多表连接删除(转)
DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释: 1. delete from t1 where 条件 2.delete t1 from t1 where 条件 3. ...
- mysql 数据库怎样快速的复制表以及表中的数据
1.copy表结构 SHOW CREATE TABLE runoob_tbl:(选择你要复制的表),copy 它的创建语句,执行即可创建表结构相同的表了,记得改名称哦. 2.copy表数据 选择你要插 ...
随机推荐
- 什么是实体关系图(ERD)? 转
https://www.visual-paradigm.com/cn/guide/data-modeling/what-is-entity-relationship-diagram/#erd-data ...
- Unity NavMesh 格式 解析 分析 对比 Recast Navigation
工具软件 Excel Nodepad++ Sublime Unity 5.4 / 5.6 VS RecastDemo CodeBlocks 分析过程以Unity项目-Demo13为例 一. 创建测试模 ...
- impala 下的SQL函数
#把时间转化成时间戳select cast('1966-07-30' as timestamp);select cast('1985-09-25 17:45:30.005' as timestamp) ...
- 阿里高级架构师教你使用Spring JMS处理消息事务源码案例
消费者在接收JMS异步消息的过程中会发生执行错误,这可能会导致信息的丢失.该源码展示如何使用本地事务解决这个问题.这种解决方案可能会导致在某些情况下消息的重复(例如,当它会将信息储存到数据库,然后监听 ...
- 《深入Linux内核架构》笔记 --- 第一章 简介和概述
Linux将虚拟地址空间划分为两个部分,分别称为内核空间和用户空间 各个系统进程的用户空间是完全彼此分离的,而虚拟地址空间顶部的内核空间总是同样的,无论当前执行的是哪个进程. 尽管Intel处理器区分 ...
- python基本应用--三元应用
格式为:result=值1 if 条件 else 值2 如 a,b,c = 1,3,5 d =a if a>b else c 那么d的结果是多少? 其实可以使用if来完全表达 if a>b ...
- OpenGL ES on iOS --- 统一变量(Uniform)和统一变量块(UBO)
简介 Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式,但uniform和顶点属性有些不同. 首先,uniform是全局的(Global).全局意味着uniform变量必须在每个着 ...
- Oracle自动化安装脚本-part02-亲试ok
此为网络配置文件 network.conf [PUBLIC-IP] IP-LIST:192.168.7.198,192.168.8.221 HOSTNAME-LIST:mysql-198,RAC2 ...
- mysql 5.5 编码设置为utf8 转载自:http://outofcontrol.ca/thoughts/comments/change-mysql-5.5-default-character-set-to-utf8
Change MySQL 5.5 default character-set to UTF8 连接里是linux下的 在window下my.ini Add under [client] the fo ...
- js中当call或者apply传入的第一个参数是null/undefined时,js函数内执行的上下文环境是什么?
在js中我们都知道call/apply,还有比较少用的bind;传入的第一个参数都是改变函数当前上下文对象; call/apply区别在于传的参数不同,一个是已逗号分隔字符串,一个以数组形式.而bin ...