noj 1004线性表的操作

来源:互联网 发布:萨龙网络 编辑:程序博客网 时间:2024/05/19 17:23

这道题本身没什么难度,主要是通过此题练习一下模板的用法(事实上完成此题时还查了一下模板部分的内容)

有两点值得注意:1,颠倒时要用另外一个数组来保存原来的数组。

                                2.注意是删除所有元素

直接上AC代码:

#include <iostream>
using namespace std;
template <class T>
class SeqList
 {
     private:
         int  Length;
         T *a;
     public:
        SeqList(int  L);
        void change();
        void Delete(T x);
        ~SeqList(){delete []a;}
        void Print();

};
template<class T>
SeqList<T>::SeqList(int  L)
{
    int i;
    Length=L;
    a=new T[Length];
    for (i=0;i<Length;i++)
    cin>>a[i];
}
template <class T>
void SeqList<T>::change()
{
    int i;
    T *b=new T [Length];
    for (i=0;i<Length;i++)
        b[i]=a[i];
    for (i=0;i<Length;i++)
        a[i]=b[Length-i-1];

}
template <class T>
void SeqList<T>::Delete(T x)
{
    int i,j,sum=0;;
    for (i=0;i<Length-sum;i++)
    {
       if (a[i]==x)
       {

           for (j=i;j<Length-1-sum;j++)
            a[j]=a[j+1];
            sum++;
            i--;
       }

    }
    Length=Length-sum;
}
template <class T>
void SeqList<T>::Print()
{

    int i;
    if (Length==0)
        cout<<endl;
    else
    {
    for (i=0;i<Length;i++)
        cout<<a[i]<<" ";
        cout<<endl;
    }
}
  int main()
  {

      int n,x1;
      char x2;
      double x3;
      cin>>n;
      SeqList<int>A(n);
      A.change();
      A.Print();
      cin>>x1;
      A.Delete(x1);
      A.Print();
      cin>>n;
      SeqList<char>B(n);
      B.change();
      B.Print();
      cin>>x2;
      B.Delete(x2);
      B.Print();
      cin>>n;
      SeqList<double>C(n);
      C.change();
      C.Print();
      cin>>x3;
      C.Delete(x3);
      C.Print();
  }


 

0 0
原创粉丝点击