CE

来源:互联网 发布:linux 复制到tmp 编辑:程序博客网 时间:2024/04/30 06:26

 

# include<iostream.h>
# include
<stdlib.h>

const int DefaultSize=100;
class Seqlist
{
    
int* data;
    
int maxsize;
    
int last;
public:
    Seqlist(
int size=DefaultSize):maxsize(size)
    
{
        
if(size>=0)
        
{data=new int[maxsize];
        last
=-1;}

        
else {cout<<"长度不能为负~!"<<endl;exit(1);}
    }

    Seqlist(Seqlist 
&a);
    
~Seqlist(){delete [] data;}
    
int Lenth(){return last+1;}
    
int Find(int &x);
    
int IsIn(int &x);
    
int Insert(int i,int &a);
    
int Remove(int i);
    
int Next(int &x);
    
int Prior(int &x);
    
int IsEmpty(){return last==-1;}
    
int IsFull(){return last==maxsize-1;}
    Seqlist 
& operator=(Seqlist &a);
    
int & operator[](int i);
    friend istream 
& operator>>(istream &,Seqlist &);
    friend ostream 
& operator<<(ostream &,Seqlist &);
}
;
int Seqlist::Find(int &x)
{
    
for(int i=0;i<=last;i++)
    
{
        
if(data[i]==x)
        
break;
    }
 
    
if(i>=last+1){cout<<"所找之数不在数组内!"<<endl; return -1;}
    
else return i;
}

Seqlist::Seqlist(Seqlist 
&a)
{
    maxsize
=a.maxsize;
    data
=new int[maxsize];
    last
=a.last;    
    
for(int i=0;i<=last;i++) data[i]=(a.data)[i];
}


int Seqlist::IsIn(int &x)
{
    
if(!(Find(x)+1))return 0;else return 1;
}

int Seqlist::Insert(int i,int &x)
{
    
if(i<0||i>last+1||i==maxsize)
    
{
        cout
<<"插入的位置不合法~!"<<endl;
        
return 0;
    }

    
else
    
{
        last
++;
        
for(int j=last;j>i;j--)
        
{data[j]=data[j-1];}
        data[i]
=x;
        
return 1;
    }


}

int Seqlist::Remove(int i)
{
    
if(i>=0&&i<=last)
    
{
        last
--;
        
for(int j=i;j<=last;j++)
        
{data[j]=data[j+1];}
        
return 1;
    }

    
else 
    
{
        cout
<<"删除的位置不合法~!"<<endl;
        
return 0;
    }

}

int Seqlist::Next(int &x)
{
    
int i=Find(x);
    
if(i>=0&&i<last) return i+1;
    
else return -1;
}

int Seqlist::Prior(int &x)
{
    
int i=Find(x);
    
if(i>0&&i<=last) return i-1;
    
else return -1;
}

Seqlist 
& Seqlist::operator=(Seqlist &a)
{
    maxsize
=a.maxsize;
    data
=new int[maxsize];
    last
=a.last;
    
for(int i=0;i<=last;i++)
        data[i]
=(a.data)[i];
    
return *this;
}


int & Seqlist::operator[](int i)
{
    
if(i<0||i>maxsize-1){cout<<"Index out of Range"<<endl;exit(1);}
    
else return data[i];
}


istream 
& operator>>(istream &input,Seqlist &a)
{
    
for(int i=0;i<a.maxsize;i++)
    
{input>>a.data[i];a.last++;}
    
return input;
}

ostream 
& operator<<(ostream &output,Seqlist &a)
{
    
for(int i=0;i<=a.last;i++)
        output
<<a.data[i]<<endl;
    
return output;
}



int main()
{
    
int i;int j;
    cout
<<"请输入数组的长度:"<<endl;
    cin
>>i;
    Seqlist a(i);
    cout
<<"请输入"<<i<<"个数"<<endl;
    cin
>>a;
    cout
<<a<<endl;
    cout
<<a.Lenth()<<endl;
    cout
<<"请输入你想找的数:";
    cin
>>j;
    cout
<<"你找的数是第"<<a.Find(j)<<"个数"<<endl;
    cout
<<a.IsIn(j)<<endl;
    Seqlist b(a);
    cout
<<b<<endl;
    Seqlist c
=b;
    cout
<<c<<endl;
    
return 0;
}