⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo_1_template_class_list.hpp

📁 对于一个初涉VC++的人来书
💻 HPP
字号:

//************************************************
//  Demo_Template_Class_List.HPP
//************************************************

# include <iostream.h>

//类界面的定义
template <class T>
class List
{
	public:
		List();
		void Add(T&);
		void Remove(T&);
		T* Find(T&);
		void PrintList();
		~List();
	protected:
		struct Node
		{
			Node* pNext;
			T* pT;
		};
		Node* pFirst;
};

//类模板的实现
template <class T>
List<T>::List()
{
	pFirst=0;
}

template <class T>
void List<T>::Add(T& t)
{
	Node* temp=new Node;
	temp->pT=&t;
	temp->pNext=pFirst;
	pFirst=temp;
}

template <class T>
void List<T>::Remove(T& t)
{
	Node* q=0;
	if(*(pFirst->pT)==t)
	{
		q=pFirst;
		pFirst=pFirst->pNext;
	}
	else
	{
		for(Node* p=pFirst;p->pNext;p=p->pNext)
			if(*(p->pNext->pT)==t)
			{
				q=p->pNext;
				p->pNext=q->pNext;
				break;
			}
	}

	if(q)
	{
		delete q->pT;
		delete q;
	}
}

template <class T>
T* List<T>::Find(T& t)
{
	for(Node* p=pFirst;p;p=p->pNext)
	{
		if(*(p->pT)==t)
			return(p->pT);
	}

	return 0;
}

template <class T>
void List<T>::PrintList()
{
	cout<<"    head->";
	for(Node* p=pFirst;p;p=p->pNext)
	{
		cout<<*(p->pT)<<"->";
	}
	cout<<"end"<<endl;
}

template <class T>
List<T>::~List()
{
	Node* p;
	while(p=pFirst)
	{
		pFirst=pFirst->pNext;
		delete p->pT;
		delete p;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -