顺序表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<<endl;
}
template<class ElemType>
void Purge_Sq(vector<ElemType> &L)
{
    output(L);
    typename std::vector<ElemType>::iterator it;
    typename std::map<ElemType,int> mp;
    for(it=L.begin();it!=L.end();it++)
    if(mp[*it]==1){L.erase(it);it--;}
        else mp[*it]=1;
    output(L);
}
int main()
{
    int Type;
    cin>>Type;
    getchar();
    if(Type!=0&&Type!=1&&Type!=2&&Type!=3)
        cout<<"err"<<endl;
    else {
            string s;
            int m;
            if(Type==0)
            {
                getline(cin,s);
                vector<int> a;
                int num=0;
                for(int i=0;i<s.size();i++)
                {
                    if(s[i]==' ')
                    {
                        a.push_back(num);
                        num=0;
                    }
                    else
                        num=num*10+s[i]-'0';
                }
                a.push_back(num);
                Purge_Sq(a);
            }
            else if(Type==1)
            {
                getline(cin,s);
                vector<double> b;
                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);
                        b.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);
            b.push_back(num);
            Purge_Sq(b);
        }
        if(Type==2)
        {
            getline(cin,s);
            vector<char> c;
            char ch;
            for(int i=0;i<s.size();i++)
            {
                ch=s[i];
                if(ch!=' ')
                    c.push_back(ch);
            }
            Purge_Sq(c);
        }
        if(Type==3)
        {
            getline(cin,s);
            vector<string> d;
            string k;
            k.clear();
            for(int i=0;i<s.size();i++)
            {
                if(s[i]==' ')
                {
                    d.push_back(k);
                    k.clear();
                }
                else
                    k+=s[i];
            }
            d.push_back(k);
            Purge_Sq(d);
        }
    }
    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、付费专栏及课程。

余额充值