zoukankan      html  css  js  c++  java
  • 基础数据结构-线性表-顺序表的合并操作

    因为最近笔记本B面裂了准备去修,复杂些的会优先加上注释,所以在家先把代码和题目贴上来以后补文字,有疑问可以在下面留言。

    顺序表的合并操作

    题目描述
    建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)

    已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序
    输入
    第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等

    第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等
    输出
    顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开

    第1行输出创建后的顺序表内容

    样例输入
    3 11 33 55
    5 22 44 66 88 99

    样例输出
    8 11 22 33 44 55 66 88 99

    #include<iostream>
    using namespace std;
    
    #define ok 0
    #define error -1
    
    class SeqList{
    private:
        int *list;
        int maxsize;
        int size;
    public:
        SeqList();
        ~SeqList();
        int list_size();
        int list_insert(int i,int item);
        int list_del(int i);
        int list_get(int i);
        void list_display();
        int get(int i);        //新建get函数
    };
    SeqList::SeqList()
    {
        maxsize  = 1000;
        size = 0;
        list = new int[maxsize];
    }
    SeqList::~SeqList()
    {
        delete []list;
    }
    
    int SeqList::list_size()
    {
        return size;
    }
    
    void SeqList::list_display()
    {
        int i;
        cout << size << ' ';
        for(i=0;i<size-1;i++)
            cout << list[i] << ' ';
        cout << list[size-1] << ' ' << endl;
    }
    
    int SeqList::list_insert(int i,int item)    //优化了一下,在主函数插入时加了1
    {
        if(i<1||i>size+1)
            return error;
        else{
            int n;
            for(n=size;n>=i;n--)
                list[n] = list[n-1];
            list[i-1] = item;
            size++;
            return ok;
        }
    }
    
    int SeqList::list_get(int i)
    {
        if (i<1||i>size)
            return error;
        else
        {
            cout << list[i-1] << endl;
            return ok;
        }
    }
        
    int SeqList::get(int i){
        return list[i];
    }
    
    int main()
    {
        int i,j,size,item;
        SeqList LA,LB;    //思路:将要合并的两组数据放入两个线性表中,上下匹配,遇到较大的数据放后,最终合并到B
        cin >> size;
        for(i=1;i<=size;i++)
        {
            cin >> item;
            LA.list_insert(i,item);
        }
        cin >> size;
        for(i=1;i<=size;i++)
        {
            cin >> item;
            LB.list_insert(i,item);
        }
        for(i=0;i<=LA.list_size()-1;i++)
        {
            for(j=0;j<=LB.list_size()-1;j++)
            {
                if(LA.get(i)<=LB.get(j))
                {
                    LB.list_insert(j+1,LA.get(i));
                    break;
                }
                if(j==LB.list_size()-1)
                {
                    LB.list_insert(j+2,LA.get(i));
                    break;
                }
            }
        }
        LB.list_display();
        return 0;
    }
  • 相关阅读:
    分布式哈希和一致性哈希算法
    消息队列rabbitmq的五种工作模式(go语言版本)
    Mysql查询缓存
    数据库的三大设计范式
    二叉树的常见算法
    消息队列选型分析
    Mysql防止索引失效原则
    Mysql索引优化单表、两表、三表实践
    数据结构 【栈与队列】
    谷歌实用插件
  • 原文地址:https://www.cnblogs.com/nathaneko/p/6491086.html
Copyright © 2011-2022 走看看