码迷,mamicode.com
首页 > 其他好文 > 详细

顺序表类的定义

时间:2014-09-30 18:25:09      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   for   sp   div   c   log   

///////////////////////////////////
//顺序表类的定义
// #include "SqList.h"
//////////////////////////////////
template<class T>
class SqList
{
private:
    T* elem;      //表首址
    int length;   //表长
    int listsize; //表容量

public:

     //构造函数,创建容量为m的空表
    SqList(int m)        
    {                          
      elem = new T[m];         //申请表空间
      length = 0;              //空表,表长为0
      listsize = m;            //表容量为m
    }

    //析构函数,删除表空间
    ~SqList()               
    {
      delete [] elem;         //释放表空间
      length = 0;
      listsize = 0;
    }

     //创建具有n个元素的线性表
    void CreateList(int n)
    {
      if(n>listsize) throw"参数非法";
      cout<<"请依次输入"<<n<<"个元素值:"<<endl;
      for(int i =1;i<=n;i++)
       cin>>elem[i-i];
      length = n;
    }

     //在表中第i个位置插入元素
    void Insert(int i,T e) 
    {  //在第i个位置插入元素,如果不能插入,显示异常信息
      if(length>=listsize)throw"上溢";
      if(i<1||i>length+1)throw"插入位置异常";
      for(int j = length;j>=i;j--)
          elem[j] = elem[j-1];
      elem[i-1] = e;
      length++;
    }

    //删除表中的第i个元素
    T Delete(int i)
    {
      T x;
      if(length == 0)throw"下溢";
      if(i<1||i>length+1)throw"删除位置异常";
      x=elem[i-1];
      for(int j=i;j<length;j++)
          elem[j-1] = elem[j];
      length--;
      return x;
    }

    //获取第i个元素的值
    T GetElem(int i)
    {
      T e;
      if(i<1||i>length)throw"位置不合法";
      e = elem[i-1];
      return e;
    }

     //元素定位
    int Locate(T e)
    {
      for(int i = 0;i<length;i++)
          if(elemi[i] == e)  
              return i+1;  //找到,返回该元素在表中的位序
          return 0;        //未找到,返回0
    }

    //清空表
    void Clear()
    {
      length =0;
    }

    //测表是否空
    int Empty()
    {
      if(length == 0)//判断表,若空,返回1.
          return 1;
      else           //不空,返回0
          return 0;
    }    

    //测表是否满
    int Full()
    {
      if(length == listsize) //表满,返回1
          return 1;
      else                   //不满,返回0
          return 0;
    }

    //返回表长
    int Length()
    {
      return length;
    }

     //输出表元素
    void ListDisp()  
    {
      for(int i = 0;i<length;i++)
      {
        cout<<i+1<<"\t";
        cout<<elem[i]<<endl;
      }
    }
}

顺序表类的定义

标签:style   blog   color   ar   for   sp   div   c   log   

原文地址:http://www.cnblogs.com/Davis812/p/4002145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!