顺序表

来源:互联网 发布:南京江宁麒麟网络问政 编辑:程序博客网 时间:2024/04/30 15:15

Seqlist.h

const int DefaultSize=100;template <typename Type> //有什么用?怎么用?class SeqList{public:SeqList(int sz=DefaultSize):m_nmaxsize(sz),m_ncurrentsize(-1){if(sz>0){m_elements=new Type[m_nmaxsize];}}~SeqList(){delete[] m_elements;}int Length() const{//get the lengthreturn m_ncurrentsize+1;}int Find(Type x) const;//find the position of xint IsElement(Type x) const;//is it in the listint Insert(Type x,int i);//insert dataint Remove(Type x);//delete dataint IsEmpty(){return m_ncurrentsize==-1;}int IsFull(){return m_ncurrentsize==m_nmaxsize-1;}Type Get(int i){//get the ith datareturn i<0||i>m_ncurrentsize?(cout<<"can't find the element"<<endl,0):m_elements[i];}void Print();private:Type *m_elements;const int m_nmaxsize;int m_ncurrentsize;};

Seqlist.cpp
template <typename Type> int SeqList<Type>::Find(Type x) const{for(int i=0;i<m_ncurrentsize;i++)if(m_elements[i]==x)return i;cout<<"can't find the element you want to find"<<endl;return -1;}template <typename Type> int SeqList<Type>::IsElement(Type x) const{if(Find(x)==-1)return 0;return 1;}template <typename Type> int SeqList<Type>::Insert(Type x, int i){if(i<0||i>m_ncurrentsize+1||m_ncurrentsize==m_nmaxsize-1){cout<<"the operate is illegal"<<endl;return 0;}m_ncurrentsize++;for(int j=m_ncurrentsize;j>i;j--){m_elements[j]=m_elements[j-1];}m_elements[i]=x;return 1;}template <typename Type> int SeqList<Type>::Remove(Type x){int size=m_ncurrentsize;for(int i=0;i<m_ncurrentsize;){if(m_elements[i]==x){for(int j=i;j<m_ncurrentsize;j++){m_elements[j]=m_elements[j+1];}m_ncurrentsize--;continue;}i++;}if(size==m_ncurrentsize){cout<<"can't find the element you want to remove"<<endl;return 0;}return 1;}template <typename Type> void SeqList<Type>::Print(){for(int i=0;i<=m_ncurrentsize;i++)cout<<i+1<<":\t"<<m_elements[i]<<endl;cout<<endl<<endl;}

Test.cpp
#include <iostream>#include "SeqList.h"using namespace std;int main(){SeqList<int> test(15);int array[15]={2,5,8,1,9,9,7,6,4,3,2,9,7,7,9};for(int i=0;i<15;i++){test.Insert(array[i],0);}test.Insert(1,0);cout<<(test.Find(0)?"can't be found ":"Be found ")<< 0 << endl<<endl;test.Remove(7);test.Print();test.Remove(9);test.Print();test.Remove(0);test.Print();return 0;}

原创粉丝点击