顺序表ADT模板简单应用算法设计:线性表的合并

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
#include<vector>
#include<string.h>
#include<map>
#include<cmath>
#include<set>
#define ll long long
#define maxn 1000001
#define ull unsigned long long
using namespace std;

template<class Elemtype>
void output(vector<Elemtype>& A)
{
    typename std::vector<Elemtype>::iterator it;
    for(it=A.begin();it!=A.end();it++)
        if(it==A.begin())cout<<*it;
        else cout<<","<<*it;
    cout<<endl;
}
template<class ElemType>
void Union_Sq(vector<ElemType>& A, vector<ElemType>& B)
{
    output(A);output(B);
    bool f=true;
   typename std::vector<ElemType>::iterator itA=A.begin();
   typename std::vector<ElemType>::iterator itB=B.begin();
   while(itB!=B.end())
   {
        itA=A.begin();
        while(itA!=A.end())
        {
            if(*itA==*itB)
            {
                f=false;
                break;
            }
            itA++;
        }
        if(f)
            A.push_back(*itB);
        f=true;
        itB++;
    }
    cout<<endl;
    output(A);
}
int main()
{
    int Type;
    cin>>Type;
    getchar();
    if(Type!=0&&Type!=1&&Type!=2&&Type!=3)
        cout<<"err"<<endl;
    else {
            string s;
            if(Type==0)
            {
                vector<int> a1,a2;
                getline(cin,s);
                int num=0;
                for(int i=0;i<s.size();i++)
                {
                    if(s[i]==' ')
                    {
                        a1.push_back(num);
                        num=0;
                    }
                    else
                        num=num*10+s[i]-'0';
                }
                a1.push_back(num);
                getline(cin,s);
                num=0;
                for(int i=0;i<s.size();i++)
                {
                    if(s[i]==' ')
                    {
                        a2.push_back(num);
                        num=0;
                    }
                    else
                        num=num*10+s[i]-'0';
                }
                a2.push_back(num);
                Union_Sq(a1,a2);
            }
            else if(Type==1)
            {
                vector<double> b1,b2;
                getline(cin,s);
                double num=0.0,sum=0.0;
                int f=0,wei=0;
                for(int i=0;i<s.size();i++)
                {
                    if(s[i]==' ')
                    {
                        num=num/pow(10,wei);
                        b1.push_back(num);
                        num=0.0;f=0;wei=0;
                    }
                    else if(s[i]=='.')
                        f=1;
                    else
                    {
                        num=num*10+s[i]-'0';
                        if(f)
                        wei++;
                    }
            }
            num=num/pow(10,wei);
            b1.push_back(num);
            getline(cin,s);
                num=0.0;sum=0.0;
                f=0;wei=0;
                for(int i=0;i<s.size();i++)
                {
                    if(s[i]==' ')
                    {
                        num=num/pow(10,wei);
                        b2.push_back(num);
                        num=0.0;f=0;wei=0;
                    }
                    else if(s[i]=='.')
                        f=1;
                    else
                    {
                        num=num*10+s[i]-'0';
                        if(f)
                        wei++;
                    }
            }
            num=num/pow(10,wei);
            b2.push_back(num);
            Union_Sq(b1,b2);
        }
        if(Type==2)
        {
            vector<char> c1,c2;
            getline(cin,s);
            char ch;
            for(int i=0;i<s.size();i++)
            {
                ch=s[i];
                if(ch!=' ')
                    c1.push_back(ch);
            }
            getline(cin,s);
            for(int i=0;i<s.size();i++)
            {
                ch=s[i];
                if(ch!=' ')
                    c2.push_back(ch);
            }
            Union_Sq(c1,c2);
        }
        if(Type==3)
        {
            vector<string> d1,d2;
            getline(cin,s);
            string k;
            k.clear();
            for(int i=0;i<s.size();i++)
            {
                if(s[i]==' ')
                {
                    d1.push_back(k);
                    k.clear();
                }
                else
                    k+=s[i];
            }
            d1.push_back(k);
            getline(cin,s);
            k.clear();
            for(int i=0;i<s.size();i++)
            {
                if(s[i]==' ')
                {
                    d2.push_back(k);
                    k.clear();
                }
                else
                    k+=s[i];
            }
            d2.push_back(k);
            Union_Sq(d1,d2);
        }
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

When_3*four

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值