C++实现顺序表

来源:互联网 发布:阿里云管理终端怎么用 编辑:程序博客网 时间:2024/06/18 11:46
#include<iostream>
using namespace std;
typedef int Datatype;
class Seqlist
{
public:
    friend ostream& operator<<(ostream& os,Seqlist& s);

 Seqlist(Datatype* pdata=NULL)         //构造函数
  :_sz(0),
  _capacity(0)
 {
      _pdata=new int[_sz];
   memcpy(_pdata,pdata,_sz*sizeof(Datatype));
   _capacity=_sz;

 }



 Seqlist(const Seqlist& s)              //拷贝构造函数
 {
   _pdata=new Datatype[s._capacity];
   memcpy(_pdata,s._pdata,(s._sz*sizeof(Datatype)));
   _sz=s._sz;
   _capacity=s._capacity;
 }



 ~Seqlist()                                       //析构函数
 {
   if(_pdata!=NULL)
    delete[] _pdata;
   _sz=0;
   _capacity=0;

 
 }

 void checkcapacity()                                   //检查容量
 {
    while(_sz>=_capacity)
   {
     Datatype* tmp=new Datatype[_capacity+10];
  
   memcpy(tmp,_pdata,_sz*sizeof(Datatype));
   delete[] _pdata;
  _pdata=tmp;
  _capacity+=10;  
   }
 }

 void Pushback(Datatype n)
 {
       checkcapacity();
    _pdata[_sz]=n;
    _sz++;
 }

 void Pushfront(Datatype n)
 {
    int i=0;
    Datatype tmp=_pdata[_sz-1];
    checkcapacity();
       for(i=_sz-1;i>=0;i--)
 {
   _pdata[i]=_pdata[i-1];
 }
    _pdata[0]=n;
    _pdata[_sz]=tmp;
    _sz++;
 }

 void Popback()
 {
   _pdata[_sz]=0;
   _sz--;
 }

 void Popfront()
 {
    int i=0;
       for(i=0;i<_sz-1;i++)
        {
          _pdata[i]=_pdata[i+1];
        }
      _sz--;
 }

 int Find(Datatype x)
 {
   int i=0;
   for(i=0;i<_sz;i++)
   {
     if(_pdata[i]==x)
   return 1;
  else
      return 0; 
   }
 
 }

 void Remove(Datatype pos)
 {
    int i=0;
  _pdata[pos]=0;
       for(i=pos;i<_sz;i++)
    {
      _pdata[i]=_pdata[i+1];
    }
   _sz--;
 }

 void RemoveAll()
 {
   delete[] _pdata;
   _sz=0;
   _capacity=0;
 }

private:Datatype* _pdata;
  int _sz;
  int _capacity;

};
ostream& operator<<(ostream& os,Seqlist& s)
{
   int i=0;
   for(i=0;i<s._sz;i++)
   {
     os<<s._pdata[i]<<" ";
   }
   cout<<endl;
   return os;
}

void test1()
{
 
 Seqlist list1;
 for(int i=0;i<100;i++)
 {
   list1.Pushback(i);
 }
 cout<<list1<<endl;
}



void test2()
{
 
 Seqlist list1;
 for(int i=0;i<5;i++)
 {
   list1.Pushback(i);
 }
 list1.Pushfront(2);
 cout<<list1<<endl;

}


void test3()
{
 
 Seqlist list1;
 for(int i=0;i<5;i++)
 {
   list1.Pushback(i);
 }
 list1.Popback();
 cout<<list1<<endl;

}


void test4()
{
 
 Seqlist list1;
 for(int i=0;i<5;i++)
 {
   list1.Pushback(i);
 }
 list1.Popfront();
 cout<<list1<<endl;

}
void test5()
{
    int ret=0;
 Seqlist list1;
 for(int i=0;i<5;i++)
 {
   list1.Pushback(i);
 }
 ret=list1.Find(7);
 if(ret==1)
  cout<<"找到"<<endl;
 else
  cout<<"没找到"<<endl;
}void test6()
{
 
 Seqlist list1;
 for(int i=0;i<5;i++)
 {
   list1.Pushback(i);
 }
 list1.Remove(2);
 cout<<list1<<endl;
 

}
int main()
{
 
 test2();
 getchar();
 return 0;
}
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 科四预约不上怎么办 教练不退钱怎么办找谁 驾考出入证丢了怎么办 科二成绩单丢了怎么办 考驾照的准考证丢了怎么办 驾考预约去不了怎么办 科目一预约没去怎么办 打狂犬疫苗期间感冒了怎么办 公司社保欠费不交怎么办 25号社保不交怎么办欠费 会计从业停考了怎么办 黑龙江龙育黄了档案怎么办 科目四档案丢了怎么办 从上海调档案到杭州怎么办 户口迁移身份证变更护照怎么办 有中国签证的孩子怎么办户口 大学生户口在学校怎么办签证 户口在南方人才市场怎么办签证 报警电话接到说方言的怎么办 学生去新加坡旅游签证怎么办 出入境的受理编号不见了怎么办 职工下岗档案单位丢失怎么办退休 大学毕业档案在自己手里怎么办 青岛李沧区房产证加名字怎么办手续 公积金迟交了1天怎么办 科一预约不上怎么办 科目一考试没去怎么办 科目一成绩单丢了怎么办 考科目二身份证丢了怎么办 考科目三身份证丢了怎么办 考科目一身份证丢了怎么办 滴滴顺风车被永久封禁怎么办 三岁宝宝智力发育迟缓怎么办 学车体检听力没过怎么办 学车体检听力不过关怎么办 离职体检发现听力有问题怎么办 买的二手房土地证没过户怎么办 b2扣了9分怎么办 上海网约车车证怎么办 b2驾照累计12分怎么办 c1本扣满12分怎么办