List 模板实现

原创 2012年03月23日 15:45:08
// 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;
}

c++::用模板实现List

我在用模板实现List的时候有很多奇奇怪怪的错误,以下我分享出来共勉,希望大家不要掉到和我一样的洞里。   1)因为使用的是模板,所以在每个需要换类型的地方都换成模板参数T(我用的是T,读者可自己定...
  • lalu58
  • lalu58
  • 2016年12月09日 14:52
  • 1374

C++中模板类list常用示例

list是STL提供的一个线性链表的数据结构,其与vector的差异,类似于链表与数组的差异。 数组:可以随机读取访问,但是要插入和删除指定元素时不容易处理,因为在扩展或缩小数组空间时,对应的其他数...
  • u012787116
  • u012787116
  • 2017年05月31日 15:36
  • 516

C++ list模板类介绍

简介          List是一种可在常数时间内在任何位置执行插入和删除操作的顺序容器。list是双向链表,其迭代器是双向的。与其他顺序容器(array, vector, deque)相比,...
  • zhangliang_571
  • zhangliang_571
  • 2014年05月18日 13:37
  • 7921

C++模板库 list 的使用方法总结

转载自: http://www.cnblogs.com/rushoooooo/archive/2011/09/03/2164623.html 本文主题        这几...
  • windzhu0514
  • windzhu0514
  • 2013年03月17日 16:02
  • 1787

STL标准模板库 list的使用

ZZ 李木空间 www.limou.net list的使用 在使用list必须包括头文件#include 如何定义一个list对象 #include int main (void) {...
  • fisher_jiang
  • fisher_jiang
  • 2011年10月05日 21:27
  • 2853

Django模板之基本的 for 循环 和 List内容的显示

工程结构 views.py def home(request): TutorialList = ["HTML", "CSS", "jQuery", "Python", "D...
  • gaoxiaoba
  • gaoxiaoba
  • 2016年09月08日 11:25
  • 2901

C++模板实现的单向链表

C++模板实现的单向链表,实现了链表的初始化创建,元素插入,元素链表末尾添加,元素删除,链表清空 //Lists.h #ifndef DDXXLISTS_H #define DDXXLISTS_H #...
  • zhuhuangtianzi
  • zhuhuangtianzi
  • 2014年02月27日 00:57
  • 1405

【STL】迭代器与List的模拟实现

什么是List List是STL库(标准模板库)中的一个容器。它的实质上就是一个双向链表,而且要注意的是,这个双向链表是有头的; 这样的设计是STL中一个很巧妙的地方, 它解决了: (1)插入数据时的...
  • qq_31828515
  • qq_31828515
  • 2016年12月22日 21:24
  • 903

关于在freemarker模板中遍历数据模型List<JavaBean>的经验

本文采用简单的servlet作为后台处理数据的工具,前台使用freemarker的ftl模板作为输出工具,简单说明怎样将封装有实体类对象的List集合注入到ftl模板中并且成功的在遍历显示出来,之前在...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2015年06月03日 22:12
  • 3468

使用Solution添加list模板并根据需要自动创建列表

我们知道SharePoint可以将一个list保存成一个吗
  • shrenk
  • shrenk
  • 2014年05月26日 15:44
  • 954
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:List 模板实现
举报原因:
原因补充:

(最多只允许输入30个字)