博客
关于我
往递增的线性表中插入一个元素使之插入后的线性表还是递增的
阅读量:359 次
发布时间:2019-03-04

本文共 1731 字,大约阅读时间需要 5 分钟。

递增线性表插入元素的解决方案

问题描述

在一个递增的线性表中插入一个新元素,使得插入后的线性表仍然保持递增的特性。这种情况下,需要找到合适的位置将新元素插入,确保线性表的有序性不被破坏。

思路分析

要实现这一目标,可以按照以下步骤进行操作:

  • 线性表的初始化

    使用一个数组来模拟线性表的存储结构,初始化数组中的元素并设置其长度。可以通过一个循环初始化数组的所有位置,并赋予它们相应的值。

  • 查找插入位置

    遍历线性表,找到第一个大于或等于要插入的元素的位置。这个位置就是插入点,前面的元素都小于或等于要插入的值,后面的元素都大于或等于要插入的值。

  • 元素插入

    将新元素插入到找到的位置,前面的元素向后移动,确保线性表的递增特性得到保持。

  • 具体实现代码

    #include 
    #define maxSize 11using namespace std;typedef struct Sqlist { int data[maxSize]; int length;} Sqlist;Sqlist L;int findElem(Sqlist L, int x) { int i; for (i = 0; i < L.length; ++i) { if (L.data[i] >= x) { return i; } } return L.length; // 如果没有找到,返回数组末尾}void insertElem(Sqlist &L, int x) { int p, i; p = findElem(L, x); for (i = L.length - 1; i >= p; --i) { L.data[i + 1] = L.data[i]; } L.data[p] = x; ++L.length;}int main() { L.data[maxSize]; for (int i = 0; i < 10; ++i) { L.data[i] = i; } L.length = 10; cout << "原线性表内容:" << endl; for (int i = 0; i < L.length; ++i) { cout << L.data[i] << " "; } cout << endl; insertElem(L, 3); cout << "插入后的线性表内容:" << endl; for (int i = 0; i < L.length; ++i) { cout << L.data[i] << " "; } cout << endl; return 0;}

    代码解释

  • 初始化

    Sqlist L; 初始化一个线性表,包含一个大小为 maxSize 的数组和一个记录长度的字段。
    L.data[maxSize]; 分配内存空间,初始化数组。
    for (int i = 0; i < 10; ++i) { L.data[i] = i; } 初始化数组中的元素为0到9。
    L.length = 10; 设置线性表的长度为10。

  • 查找位置

    int findElem(Sqlist L, int x) 函数用于查找要插入的位置。遍历数组,返回第一个大于或等于 x 的索引。如果没有找到,返回数组末尾的位置。

  • 插入元素

    void insertElem(Sqlist &L, int x) 函数用于插入元素。首先通过 findElem 获取插入位置 p。然后从数组末尾开始,从 p 的位置开始,将每个元素向后移动一位,最后将 x 插入到 p 的位置。最后增加线性表的长度。

  • 测试输出

    main 函数中,首先输出原线性表的内容,然后调用 insertElem 插入元素3,并输出插入后的结果。

  • 通过以上方法,可以在递增的线性表中成功插入一个新元素,保持线性表的有序性。

    转载地址:http://wewg.baihongyu.com/

    你可能感兴趣的文章
    Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)
    查看>>
    Openlayers高级交互(15/20):显示海量多边形,10ms加载完成
    查看>>
    Openlayers高级交互(16/20):两个多边形的交集、差集、并集处理
    查看>>
    Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
    查看>>
    Openlayers高级交互(18/20):根据feature,将图形适配到最可视化窗口
    查看>>
    Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
    查看>>
    Openlayers高级交互(2/20):清除所有图层的有效方法
    查看>>
    Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
    查看>>
    Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除
    查看>>
    Openlayers高级交互(4/20):手绘多边形,导出KML文件,可以自定义name和style
    查看>>
    Openlayers高级交互(5/20):右键点击,获取该点下多个图层的feature信息
    查看>>
    Openlayers高级交互(6/20):绘制某点,判断它是否在一个电子围栏内
    查看>>
    Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
    查看>>
    Openlayers高级交互(8/20):选取feature,平移feature
    查看>>
    Openlayers高级交互(9/20):编辑图形(放缩、平移、变形、旋转),停止编辑
    查看>>
    Openlayers:DMS-DD坐标形式互相转换
    查看>>
    openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
    查看>>
    OpenLDAP(2.4.3x)服务器搭建及配置说明
    查看>>
    OpenLDAP编译安装及配置
    查看>>
    Openmax IL (二)Android多媒体编解码Component
    查看>>