码迷,mamicode.com
首页 > 编程语言 > 详细

c++入门05

时间:2016-06-18 06:42:23      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

#include "iostream"
template<class T>
class Sqlist{//顺序表
private:
int n;
int last;//表尾指针
int MaxSize;//最大变长
T*data;//表元素数组
public:
Sqlist(int Max=10);//设置表的默认长度为10
~Sqlist(){delete[] data;}//析构函数
int Locate(const T&x)const; //返回元素位置
int Insert(int k,const T&x);//在表的位置k处插入元素x
int Delete(int k,T&x);//删除表位置为k的元素x

};
template<class T>//不可省略
Sqlist<T>::Sqlist(int Max){
MaxSize =Max;
data=new T[MaxSize];//动态分配数组
last=-1;//表长last从0开始计数即表长last=3,表示表中有4个元素
}
template<class T>//不可省略
int Sqlist<T>::Locate(const T&x)const//返回表中元素x的位置
{
int i=0;
while(i<=last&&data[i]!=x)i++;

if(i>last)//查找失败
return -1;
else //查找成功
return i;

}
template<class T>//不可省略 移动元素个数n/2
int Sqlist<T>::Insert(int k,const T&x){//表的插入
if ((k<0||k>last+1)||last==MaxSize-1)
return 0;//不可插入
else{
last++;//表长加一
for (int j=last;j>k;j--)//将k后面元素全部后移
data[j]=data[j-1];
data[k]=x;//插入元素x
return 1;//可插入
}
}
template<class T>//不可省略
Sqlist<T>::Delete(int k,T&x){//删除元素 移动元素个数(n-1)/2
if (k<0||k>last)
return 0;//不可删除
last--;
for (int j=k;j<=last;j++)
data[j]=data[j+1];
}

c++入门05

标签:

原文地址:http://www.cnblogs.com/wangshuile/p/5595549.html

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