前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >函数模板之名为List的类模板—C++

函数模板之名为List的类模板—C++

作者头像
WindCoder
发布2018-09-19 18:19:26
1.4K0
发布2018-09-19 18:19:26
举报
文章被收录于专栏:WindCoderWindCoder
代码语言:javascript
复制
/*
功能:编写一个名为List的类模板
作者:WindCoder
日期:2013-12-12
*/
#include <iostream>
using namespace std;
template <class T>
class List
{
public:
	List();
	~List();
	bool Add(T a);
	void Clear();
	void Display ();
	bool Del(int num);
	bool Addone(T a,int pos);
	bool Find(T a);
private:
     int aSize;
     T   *m_aData;
};
//构造函数
template <class T>
List<T>::List()
{
	aSize = 0;
	m_aData=NULL;
}
//析构函数
template <class T>
List<T>::~List()
{
	delete m_aData;
}
/************************************************************************
函数名:Add(T a)
功能:插入元素至末尾
参数:a 要插入的元素
返回值:true成功,false失败
************************************************************************/
template <class T>
bool List<T>::Add(T a)
{
	T *p;
	p= new T[aSize+1];
	if (!p)
	{
		return false;
	}
	for (int i=0;i<aSize;i++)
	{
		p[i]=m_aData[i];
	}
	p[aSize] = a;
	delete m_aData;
	m_aData = p;
	aSize++;
	return true;

}
/************************************************************************
函数名:Clear();
功能:清空
参数:无
返回值:无
************************************************************************/
template <class T>
void List<T>::Clear()
{
	delete m_aData;
	m_aData = NULL;
	aSize = 0;
}
/************************************************************************
函数名:Display ()
功能:遍历
参数:无
返回值:无
************************************************************************/
template <class T>
void List<T>::Display ()
{
	for(int i=0;i<aSize;i++)
	{
		cout<<m_aData[i]<<" ";
	}


}
/************************************************************************
函数名:Del(int pos)
功能:删除
参数:int pos 要删除的元素所在位置(从0开始)
返回值:true成功,false失败
************************************************************************/
template <class T>
bool List<T>::Del(int pos)
{
	int i=0;
	if (pos<0||pos>=aSize)
	{
		return false;
	}
	T *p;
	p = new T[aSize-1];
	for (;i<pos;i++)
	{
		p[i] = m_aData[i];
	}
	for(i=pos+1;i<aSize;i++)
	{
		p[i-1]=m_aData[i];
	}
	delete m_aData;
	m_aData = p;
	aSize--;
	return true;


}
/************************************************************************
函数名:Addone(T a,int pos);
功能:在特定位置插入元素
参数:T a 要插入的值
      int pos 要插入的位置
返回值:true成功,false失败
************************************************************************/
template <class T>
bool List<T>::Addone(T a,int pos)
{
	int i=0;
	if (pos<0||pos>aSize)
	{
		return false;
	}
	T *p;
	p = new T[aSize+1];
	aSize++;
	for (;i<pos;i++)
	{
		p[i] = m_aData[i];
	}
	p[pos]=a;
	for(i=pos+1;i<aSize;i++)
	{
		p[i+1]=m_aData[i];
	}
	delete m_aData;
	m_aData = p;
	return true;

}
/************************************************************************
函数名:Find(T a);
功能:查找指定元素
参数:T a 待查找元素
返回值:true存在,false不存在
************************************************************************/
template <class T>
bool List<T>:: Find(T a)
{
	for (int i=0;i<aSize;i++)
	{
		if (a==m_aData[i])
		{
			return true;
		}
	}
	return false;

}
int main(void)
{
	int i;
    List<int>list;
	list.Add(1);
	list.Add(5);
	list.Add(13);
    list.Display();
	cout<<endl;

	list.Del(0);
	list.Display();
	cout<<endl;

	list.Addone(8,2);
	list.Display();
	cout<<endl;
    i=list.Find(4);
	if (i)
	{
		cout<<"元素存在"<<endl;
	}
	else
	{
        cout<<"元素不存在"<<endl;
	}

	system("pause");
	return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档