noj 1004线性表的操作

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

有两点值得注意: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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值