List 模板实现

部署运行你感兴趣的模型镜像
// template.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include <iostream>
using namespace std;


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 = NULL;
}


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 = NULL; //待删节点
if(*(pFirst->pT) == t)
{
q = pFirst;
pFirst = pFirst ->pNext;
}
else 
for(Node * p = pFirst,* r = pFirst;p!=NULL;r=p,p=p->pNext)
{
if(*(p->pT) == t)
{
q = p;
r->pNext = p->pNext;
break;
}
}
if(q)
{
delete q->pT;
delete q;
}
}


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


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


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




int _tmain(int argc, _TCHAR* argv[])
{
List<float>floatlist;
for(int i=0;i<5;i++)
{
floatlist.Add(* (new float(i+0.1)));
}
floatlist.PrintList();
float b= 1.1;
float *q = floatlist.Find(b);
if(q)
floatlist.Remove(*q);
floatlist.PrintList();
system("pause");
return 0;
}

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值