西工大数据结构NOJ001:顺序表的插入运算

西工大数据结构NOJ001:顺序表的插入运算

前言:
noj的所有题目都是使用c++写的,风格偏向面向对象的语言,因为struct在c++中就相当于属性和方法都为public的一个类,并且在内存的使用上会比class更小一点,很讨厌c语言那样写一堆函数,我觉得结构化的写法更清晰易懂。
因为二十号就要考试了,所以把每道题的解题思路写下来也算是做了一个复习吧

题目描述:
已知顺序表 L 递增有序,编写程序,将 X 插入到线性表的适当位置上,以保持线性表的有序性。
第一行输入顺序表元素个数 elenum;(0<elenum<1000)
第二行输入顺序表 L;
第三行输入插入值 X。
要求输出插入 X 后的有序顺序表
第一题非常的简单,就只要找到要插入的位置就行了

#include <iostream>
using namespace std;
#define MAXSIZE 100
struct SqList{
    int elem[MAXSIZE];
    int length;//线性表的长度
    SqList(int length){
        this->length=length;
    }//直接使用构造函数,在造对象的时候长度就可以根据输入确定了
    void PrintList(){
        for(int i=0;i<length;i++){
            cout<<elem[i]<<" ";
        }
    }
    //输出这个线性表的所有元素
    void insert(int e){
        int pos=0;
        for(int i=0;i<length;i++){
            if(e>=elem[i]){
                pos++;
            }
        }//找到要插入的位置,pos代表位置
        for(int j=length-1;j>=pos;j--){
            elem[j+1]=elem[j];
        }//数组的每个元素都向后移动
        length++;
        elem[pos]=e;
    }
};
int main(int argc, char const *argv[])
{
    int length;
    cin>>length;
    SqList L(length);
    for(int i=0;i<length;i++){
        cin>>L.elem[i];
    }
    int e;
    cin >> e;
    L.insert(e);
    L.PrintList();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值