顺序表
#include <iostream>
#include <cassert>
#include <cstdlib>
#include <ctime>
using namespace std;
typedef int T;
const int defaultSize = 100;
class SeqList
{
private:
T* data;
int maxSize;
int last;
void Resize(int newSize)
{
maxSize=newSize;
}
public:
SeqList(int sz=defaultSize)
{
last=-1;
data=new T[sz];
maxSize=defaultSize;
}
SeqList(const SeqList& L)
{
maxSize=L.maxSize;
last=L.last;
for(int i=0;i<last;i++)
{
data[i]=L.data[i];
}
}
SeqList& operator=(const SeqList& L)
{
maxSize=L.maxSize;
last=L.last;
for(int i=0;i<last;i++)
{
data[i]=L.data[i];
}
return *this;
}
~SeqList()
{
delete []data;
last=0;
}
virtual int Size() const
{
return maxSize;
}
virtual int Length() const
{
return last+1;
}
virtual int Search(T & x) const
{
for(int i=0;i<=last;i++)
{
if(data[i]==x)
{
return i+1;
}
}
return 0;
}
virtual int Locate(int i) const
{
if(i>last+1)
return false;
return true;
}
virtual bool GetData(int i, T& x) const
{
if(Locate(i-1))
{
x=data[i-1];
return true;
}
return false;
}
virtual void SetData(int i, T& x)
{
if(Locate(i-1))
{
data[i-1]=x;
}
}
virtual bool IsEmpty() const
{
return last==0;
}
virtual bool IsFull() const
{
return last==maxSize;
}
virtual bool Insert(int i, const T& x)
{
if(i<=last+2)
{
int j;
for( j=last+1;j>=i;j--)
{
data[j]=data[j-1];
}
data[j]=x;
last++;
return true;
}
return false;
}
virtual bool Remove(int i, T&x)
{
if(Locate(i))
{
for(int j=i-1;j<last;j++)
{
data[j]=data[j+1];
}
last--;
return true;
}
return false;
}
virtual void Sort()
{
for(int i=0;i<last;i++)
{
for(int j=i;j<=last;j++)
{
if(data[i]>data[j])
{
T temp;
temp=data[i];
data[i]=data[j];
data[j]=temp;
}
}
}
}
friend istream& operator>>(istream& in, SeqList & L)
{
int i,num;
in>>num;
if(num<0) L.last=-1;
L.last=num-1;
for(i=0;i<=L.last;i++)
{
in>>L.data[i];
}
return in;
}
friend ostream& operator<<(ostream& out, const SeqList& L)
{
int i;
for(i=0;i<=L.last;i++)
{
if(i==L.last)
{
out<<L.data[i];
}
else
out<<L.data[i]<<" ";
}
return out;
}
void Reverse ()
{
for(int i=0;i<=last/2;i++)
{
int temp;
temp=data[i];
data[i]=data[last-i];
data[last-i]=temp;
}
}
};
int main()
{
SeqList sList;
cin>>sList;
int i, val;
cin>>i>>val;
sList.Insert(i,val);
cout<<sList;
cin>>i;
sList.Remove(i,val);
cout<<sList;
cin>>val;
i=sList.Search(val);
if(i==0)
cout<<"Not found"<<endl;
else
cout<<i<<endl;
sList.Reverse();
cout<<sList;
}