C++實現順序表的使用

#include <iostream>
using namespace std;
template<class T>
class SeqList 
{
protected:
    T *element;//動態數組存儲順序表的數據元素
    int length;//順序表的數組容量
    int n;//順序表的個數
public:
    void init(T values[],int n)//初始化順序表
    {
        this->length=n*2;//開闢2n的空間
        this->element=new int[this->length];
        this->n=n;
        for (int i=0;i<n;i++)
        {
            this->element[i]=values[i];//執行int的賦值,
        }
            
    }
    SeqList(int length=32)//構造空表
    {
        this->element=new int[length];
        this->length=length;
        this->n=0;
    }
    SeqList(int length,int x)//構造順序表
    {
        this->element=new int[length];
        this->length=this->n=length;
        if (int i=0;i<this->n;i++)
        {
            this->element[i]=x;
        }
    }
    SeqList(int values[],int n )//構造順序表  由values提供元素  n爲個數
    {
        this->init(values,n);
    }
    bool empty()//判斷順序表是否爲空
    {
        return this->n==0;
    }
    int count()//返回順序表元素個數
    {
        return this->n;
    }
    void DispList()//輸出元素
    {
    cout << "Out:" << endl;
    for(int i=0; i<length; i++){
        cout << element[i] << " ";
    }
    cout << endl;
    }
    void insert(int i,T x)//在第i個元素插入
    {
        if(i<0)i=0;
        if(i>this->n) i=this->n;
        T*temp=this->element;
        for(int j=this->n-1;j>=i;j--)
            this->element[j+1]=temp[j];
        if(temp!=this->element)
            delete[]temp;
        this->element[i]=x;
        this->n++;
    }
    void insert(T x)//在末尾插入
    {
        insert(this->n,x);
    }
    int serch(T key,int str)//查找
    {
        for(int i=str;i<this->n;i++)
        
            if(this->element[i]==key)
                return i;

        return -1;
    }
    int remove(int i)//刪除第i個元素
    {
        for(int j=i;j<this->n;j++)
            this->element[j]=this->element[j+1];
        return 0;
    }
        
};
void main()
{
    SeqList <int> Seql;
    int xy[10]={1,2,3,4,5,6,7,8,9,10
    };
    Seql.init(xy,10);
    Seql.DispList();
    Seql.insert(2,9);
    Seql.DispList();
    Seql.insert(10);
    Seql.DispList();
    cout<<Seql.serch(8,3)<<endl;
    Seql.remove(4);
    Seql.DispList();
    
    

}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章