顺序表用C++实现的,简便用了int类型存储,删除方面有点问题,但就这样了,以后在改正,慢慢来
#include<iostream>
using namespace std;
class Selist
{
private:
int m_currentsize;
int m_maxsize;
int*m_elements;
public:
Selist(int size);
~Selist();
int Length()const;
int Find(int data)const;
int Insert(int data,int i);
int delet(int data);
int change(int data,int changedata);
void Show();
};
int main()
{
Selist list(20);
int elements[10]={1,2,3,4,5,6,7,8,9,0};
for(int i=0;i<10;i++)
{
list.Insert(elements[i],0);
}
list.change(5,55);
list.Show();
// list.Show();
// list.Insert(233,4);
// list.Show();
// list.Find(333);
// cout<<"5"<<list.Find(5)<<endl;
// list.delet(9);
// list.Show();
// list.delet(2);
//list.Show();
return 0;
}
Selist::Selist(int size)
{
m_currentsize=-1;
if(size>0)
{
m_maxsize=size;
}
m_elements=new int[m_maxsize];
}
Selist::~Selist()
{
delete[]m_elements;
}
int Selist::Length()const
{
return m_currentsize+1;
}
int Selist::Find(int data)const
{
for(int i=0;i<m_maxsize;i++)
{
if(m_elements[i]==data)
return i;
}
cout<<"there is no number that you want find"<<endl;
return -1;
}
int Selist::Insert(int data,int i)
{
if(i<0||i>m_currentsize+1||m_currentsize==m_maxsize-1)
{
cout<<"this operate can not do"<<endl;
return 0;
}
m_currentsize=m_currentsize+1;
if(m_currentsize==0)
m_elements[0]=data;
else
for(int j=m_currentsize;j>i;j--)
{
m_elements[j]=m_elements[j-1];
}
m_elements[i]=data;
return 0;
}
int Selist::delet(int data)
{
for(int i=0;i<m_maxsize;i++)
{
if(m_elements[i]==data)
{
for(int j=i;j<m_currentsize;j++)
{
m_elements[j]=m_elements[j+1];
}
}
m_currentsize--;
}
return 0;
}
int Selist::change(int data,int changedata)
{
for(int i=0;i<m_maxsize;i++)
if(m_elements[i]==data)
m_elements[i]=changedata;
return 0;
}
void Selist::Show()
{
for(int i=0;i<m_currentsize;i++)
cout<<m_elements[i]<<endl;
}