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

 

 

posted @ 2014-06-12 21:21  123木头人啊  阅读(901)  评论(0编辑  收藏  举报