ACM——线性表操作

线性表操作

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:2795            测试通过:589

描述

 

线性表是n个元素的有序集合(n³0),n是线性表中元素的个数,称为线性表的长度。可以用一组地址连续的存储单元依次存储线性表中元素,采用这种存储方式的线性表称为顺序表。

请在顺序表上实现运算,实现顺序表的逆置,删除表中所有元素值等于x的元素。

 

输入

 

三组数据,顺序表元素类型分别为整型、字符型和实型。

每一组第一行给出元素数目n0<n1000),第二行给出元素数值,第三行给出待删除的元素。

 

输出

 

三组数据,每一组第一行为逆置后的顺序表元素,第二行是在此基础上删除指定元素后的顺序表元素

 

样例输入

8
1 2 3 7 5 6 7 8 
7
3
a c m
h
4
1.2 3.4 5.6 7.8
1.2

样例输出

8 7 6 5 7 3 2 1 
8 6 5 3 2 1 
m c a 
m c a 
7.8 5.6 3.4 1.2 
7.8 5.6 3.4 

提示

 

该题属于南京邮电大学《数据结构A》实验一中的内容,验证的是课本代码,每一个输出元素后均有一个空格(包括最后一个元素),请慎重解答。

 

题目来源

CHENZ

 

#include<iostream>

using namespace std;

template<class T>

class SeqList

{

private:

    T * elements;

    int maxLength;

    int n;

public:

    SeqList(int nSize)

    {

        maxLength=nSize;

        elements=new T[maxLength];

        n=0;

    }

    void Insert(T x)

    {

        if(n>=maxLength)

            cout<<"out of bounds"<<endl;

        elements[n]=x;

        n++;

    }

    void Delete(T x)

    {

        for(int i=0;i<n;i++)

        {

            if(elements[i]==x)

            {

                for(int j=i;j<n;j++)

                    elements[j]=elements[j+1];

                n--;

                i--;

            }

        }

    }

    void outPut()

    {

        for(int i=n-1;i>=0;i--)

        {

            cout<<elements[i]<<" ";

        }

        cout<<endl;

    }

};

int main()

{

    int n;

    cin>>n;

    SeqList<int> list(n);

    int x;

    for(int i=0;i<n;i++)

    {

        cin>>x;

        list.Insert(x);

    }

    cin>>x;



    int size;

    cin>>size;

    SeqList<char> clist(size);

    char ch;

    for(int k=0;k<size;k++)

    {



        cin>>ch;

        clist.Insert(ch);

    }

    cin>>ch;



    int size2;

    cin>>size2;

    SeqList<float> flist(size2);

    float value;

    for(int m=0;m<size2;m++)

    {

        cin>>value;

        flist.Insert(value);

    }

    cin>>value;



    list.outPut();

    list.Delete(x);

    list.outPut();

    clist.outPut();

    clist.Delete(ch);

    clist.outPut();

    flist.outPut();

    flist.Delete(value);

    flist.outPut();

    return 0;

}

 

题目链接http://202.119.236.66:9080/acmhome/problemdetail.do?&method=showdetail&id=1004

 

 

你可能感兴趣的:(ACM)