LinkList万能模板
- 格式:doc
- 大小:28.50 KB
- 文档页数:5
数据结构实验报告——模板类实现链表目录1.实验内容……………………………………………………………………PAGE.22.实验目的……………………………………………………………………PAGE.2 3预备知识……………………………………………………………………PAGE.24.技术难点……………………………………………………………………PAGE.25.设计思路……………………………………………………………………PAGE.36.成员函数实现举例…………………………………………………………PAGE.47.测试代码……………………………………………………………………PAGE.78.心得体会……………………………………………………………………PAGE.101.实验内容➢定义一个包含模板的结构。
➢定义一个链表类,能够增加元素、删除元素、查找元素、打印链表。
➢编写测试代码,验证链表类编写是否正确2.实验目的➢理解指针的定义➢理解类的结构➢学习使用类模板3.预备知识➢内存:计算机存储硬件。
为了区别内存的不同位置,内存被分成字节,内存的全部字节顺序地赋予一个称为地址的编号。
因此,内存地址是物理的,计算机设计好就给定了。
➢变量:在内存中占据一定的内存字节,在这些字节中存储的数据信息称为变量的内容。
因此,通过变量就可以操作内存,也就是说要操作某块内存,就必须先将这块内存的首地址和一个变量名绑定起来。
换句话说,当我们声明一个变量后,就意味着我们申请使用一块特定大小的内存,用于存储我们的数据。
➢指针变量:在变量中,有一类变量比较特殊,其形式为int *ptr。
其特殊性是指该变量不是直接存储数据,而是存储内存地址。
因此,通过该变量,我们可以得到另外一个内存空间所存储的信息。
➢数组:由于变量所申请的内存空间是非常有限的,很多情况下,我们需要更大的空间,例如存储字符串”C++ is difficult but interesting”。
ASPCMS标签详细教程导航栏调用{aspcms:navlist type=0}<a href="[navlist:link]">[navlist:name]</a>{/aspcms:navlist}type 父级栏目ID[navlist:link] 导航链接地址[navlist:name] 名称[navlist:sortid] 栏目ID二级导航调用{aspcms:navlist type=0}<a href="[navlist:link]">[navlist:name]</a>{aspcms:subnavlist type=[navlist:sortid]}<a href="[subnavlist:link]">[subnavlist:name]</a> {/aspcms:subnavlist}{/aspcms:navlist}二级导航{aspcms:subnavlist type=[navlist:sortid]}<a href="[subnavlist:link]">[subnavlist:name]</a> {/aspcms:subnavlist}辅助模板调用辅助模板调用{aspcms:template src=side.html}src=side.html 辅助模板文件地址可设置任意多个辅助模板,在需要的地方写上这个标签就OK了当前分类名称调用当前分类名称调用{aspcms:sortname}当前分类ID{aspcms:sortid}上级分类ID{aspcms:parentsortid}分类列表调用几个实例上级分类的分类列表{aspcms:navlist type={aspcms:parentsortid}}<a href="[navlist:link]" {if:[navlist:sortid]={aspcms:sortid}} class="p_menu_on" {endif} >[navlist:name]{if:[navlist:sortid]={aspcms:sortid}} <div class="p_angle"></div> {end if} </a>{/aspcms:navlist}固定分类列表{aspcms:navlist type=4}<a href="[navlist:link]" {if:[navlist:sortid]={aspcms:sortid}} class="p_menu_on" {endif} >[navlist:name]{if:[navlist:sortid]={aspcms:sortid}} <div class="p_angle"></div> {end if} </a>{/aspcms:navlist}里面可以调用二级的{aspcms:subnavlist type=[navlist:sortid]}<a href="[subnavlist:link]">[subnavlist:name]</a>{/aspcms:subnavlist}内容详细页调用内容详细页调用单篇文章内容[about:info] 单篇内容[about:desc] 描述提取内容前100字新闻详细[news:title] 新闻标题[news:desc] 描述提取内容前100字[news:source] 新闻来源[news:date] 日期[news:visits] 浏览量[news:info] 内容产品详细[product:pic] 图片地址[product:title] 标题[product:desc] 描述提取内容前100字[product:source] 来源[product:date] 日期[product:visits] 浏览量[product:info] 内容图片详细[pic:pic] 图片地址[pic:title] 标题[pic:desc] 描述提取内容前100字[pic:source] 来源[pic:date] 日期[pic:visits] 浏览量[pic:info] 内容下载详细[down:downurl] 下载地址[down:title] 标题[down:desc] 描述提取内容前100字[down:source] 来源[down:date] 日期[down:visits] 浏览量[down:info] 内容上一篇下一篇调用上一篇:{aspcms:prev}下一篇:{aspcms:next}这个就不需要详细讲了吧列表页列表内容调用size 每页显示内容数量oedr 排序字段(id,time,visits)[newslist:link] 链接地址[newslist:title] 新闻标题[newslist:title len=40] 新闻标题长度40 [newslist:visits] 浏览量[newslist:date style=yy-m-d] 日期style 日期显示样式yy-m-d 2010-01-01y-m-d 10-01-01m-d 01-01新闻列表{aspcms:newslist size=15 order=time}<a href="[newslist:link]" title="[newslist:title]">[newslist:title len=40]</a>[newslist:date style=yy-m-d][newslist:visits]{/aspcms:newslist}产品列表{aspcms:productlist size=20 order=time}<a href="[productlist:link]" title="[productlist:title]"><imgsrc="[productlist:pic]" /></a><a href="[productlist:link]"title="[productlist:title]">[productlist:title len=10]</a>{/aspcms:productlist}图片列表{aspcms:piclist size=20 order=time}<a href="[piclist:link]" title="[pic:title]"><imgsrc="[piclist:pic]" /></a><a href="[piclist:link]" title="[piclist:title]">[piclist:titlelen=10]</a>{/aspcms:piclist}下载列表{aspcms:downlist size=15 order=time}<a href="[downlist:link]" title="[downlist:title]">[downlist:title len=50]</a>[downlist:date style=yy-m-d][downlist:visits]{/aspcms:downlist}分页条调用[newslist:pagenumber len=5]2010-11-29 09:35:16 上传下载附件(4.64 KB)len 这里页码显示数量新闻列表时使用[newslist:pagenumber len=5]产品列表时使用[productlist:pagenumber len=5]下载列表时使用[downlist:pagenumber len=5]图片列表时使用[piclist:pagenumber len=5]首页新闻列表调用{aspcms:news sort=2 num=5 }<li><a href="[news:link]">[news:title len=20]</a>[[news:date style=m-d]]</li>{/aspcms:news}type 栏目类型0 文章列表1 图片列表2 单篇文章3 产品列表4 下载列表sort 栏目IDnum 显示内容数量[news:link] 链接地址[news:title len=20] 标题[news:date style=m-d] 日期style 日期显示样式yy-m-d 2010-01-01y-m-d 10-01-01m-d 01-01留言调用调用留言表单{aspcms:gbook}留言列表{aspcms:gbooklist size=10 order=time}[gbooklist:title][gbooklist:name][gbooklist:wdate style=y-m-d][gbooklist:winfo]{if: [gbooklist:status]}[gbooklist:rdate style=y-m-d][gbooklist:rinfo]{end if}{/aspcms:gbooklist}size 显示条数order 排序字段(id , time)[gbooklist:title] 留言标题[gbooklist:name] 留言人姓名[gbooklist:wdate style=y-m-d] 留言时间[gbooklist:winfo] 留言内容[gbooklist:status] 留言状态[gbooklist:rdate style=y-m-d] 回复时间[gbooklist:rinfo] 回复内容友情链接调用{aspcms:linklist type=all}<a href="[linklist:link]" target="_blank">[linklist:name]</a><br /> {/aspcms:linklist}type 链接类型all 所有font 文字链接pic 图片链接[linklist:link] 链接地址[linklist:name] 链接显示文字[linklist:pic] 链接图片地址全局参数调用网站地址{aspcms:siteurl}网站LOGO地址{aspcms:sitelogo}网站目录{aspcms:sitepath}默认模板{aspcms:defaulttemplate} 公司名称{aspcms:companyname}网页附加标题{aspcms:additiontitle} 公司地址{aspcms:companyaddress} 邮政编码{aspcms:companypostcode} 电话号码{aspcms:companyphone}公司传真{aspcms:companyfax}电子邮箱{aspcms:companyemail}备案号{aspcms:companyicp}统计代码{aspcms:statisticalcode} 网站标题{aspcms:sitetitle}网站版权{aspcms:copyright}网站主要描述{aspcms:sitedesc}网站关键词{aspcms:sitekeywords}幻灯片{aspcms:slide}在线客服{aspcms: onlineservice} 53客服{aspcms: 53kf}{aspcms: floatad}首页产品列表调用{aspcms:product sort=4 num=10 }<li><a href="[product:link]"><img src="[product:pic]" width="120px" /></a><br /><a href="[product:link]">[product:title len=4]</a></li>{/aspcms:product}type 栏目类型0 文章列表1 图片列表2 单篇文章3 产品列表4 下载列表sort 栏目IDnum 显示内容数量[product:link] 产品链接[product:pic]产品图片地址[product:title len=4] 产品名称 len 显示长度在使用ASPCMS时应注意链接规则:类型单篇文章 about/?sortid.html文章列表 newslist/?sortid_page.html文章详细 news/?sortid_id.html产品列表 productlist/?sortid_page.html产品详细 product/? sortid_id.html图片列表 piclist/?sortid_page.html图片详细 pic/?sortid_id.html下载列表 downlist/?sortid_page.html下载详细 down/?sortid_id.html留言板 gbook/Sortid为分类ID, id为内容ID在模板文件中,引用样式表和JS前面加 /{aspcms:sitePath}Templates/{aspcms:defaultTemplate}/href="/{aspcms:sitePath}Templates/{aspcms:defaultTemplate}/css/layout .css" rel="stylesheet" type="text/css" media="screen" />在超链接前面加 /{aspcms:sitePath}例: <a href="/{aspcms:sitePath}productlist/?4_1.html">更多>></a>ASPCMS标签总结导航{aspcms:navlist type=0}<a href="[navlist:link]">[navlist:name]</a>{aspcms:subnavlist type=[navlist:sortid]}<a href="[subnavlist:link]">[subnavlist:name]</a>{/aspcms:subnavlist}{/aspcms:navlist}调用head.html模板{aspcms:top}调用foot.html模板{aspcms:foot}调用留言表单{aspcms:gbook}留言列表{aspcms:gbooklist size=10 order=time}[gbooklist:title][gbooklist:name][gbooklist:wdate style=y-m-d][gbooklist:winfo]{if: [gbooklist:status]}[gbooklist:rdate style=y-m-d][gbooklist:rinfo]{end if}{/aspcms:gbooklist}辅助模板{aspcms:template src=side.html}当前位置首页{aspcms:position} >>[position:link]{/aspcms:position}首页 >>新闻发布 >>公司新闻当前分类名称{aspcms:sortname}当前分类ID{aspcms:sortid}if标签{if:[navlist:sortid]={aspcms:sortid}} class="p_menu_on" {end if}内容页分页{aspcms:page}单篇文章内容[about:info][about:desc]新闻详细[news:title][news:desc][news:source][news:date][news:visits][news:info]产品详细[product:pic][product:title][product:desc][product:source][product:date][product:visits][product:info]图片详细[pic:pic][pic:title][pic:desc][pic:source][pic:date][pic:visits][pic:info]下载详细[down:downurl][down:title][down:desc][down:source][down:date][down:visits][down:info]上一篇:{aspcms:prev}下一篇:{aspcms:next}新闻列表{aspcms:newslist size=15 order=time}<a href="[newslist:link]" title="[newslist:title]">[newslist:title len=40]</a>[newslist:date style=yy-m-d][newslist:visits]{/aspcms:newslist}{aspcms:productlist size=20 order=time}<a href="[productlist:link]" title="[productlist:title]"><imgsrc="[productlist:pic]" /></a><a href="[productlist:link]"title="[productlist:title]">[productlist:title len=10]</a>{/aspcms:productlist}图片列表{aspcms:piclist size=20 order=time}<a href="[piclist:link]" title="[pic:title]"><imgsrc="[piclist:pic]" /></a><a href="[piclist:link]" title="[piclist:title]">[piclist:titlelen=10]</a>{/aspcms:piclist}下载列表{aspcms:downlist size=15 order=time}<a href="[downlist:link]" title="[downlist:title]">[downlist:title len=50]</a>[downlist:date style=yy-m-d][downlist:visits]{/aspcms:downlist}分页条[newslist:pagenumber len=8]网站地址{aspcms:siteurl}网站LOGO地址{aspcms:stielogo}网站目录{aspcms:sitepath}默认模板{aspcms:defaulttemplate}公司名称{aspcms:companyname}网页附加标题{aspcms:additiontitle}公司地址{aspcms:companyaddress}邮政编码{aspcms:companypostcode}电话号码{aspcms:companyphone}公司传真{aspcms:companyfax}{aspcms:companyemail}备案号{aspcms:companyicp}统计代码{aspcms:statisticalcode} 网站标题{aspcms:sitetitle}网站版权{aspcms:copyright}网站主要描述{aspcms:sitedesc}网站关键词{aspcms:sitekeywords}幻灯片{aspcms:slide}在线客服{aspcms: onlineservice} 53客服{aspcms: 53kf}漂浮广告{aspcms: floatad}。
c语言中linklist的作用C语言中LinkList的作用什么是LinkListLinkList(链表)是C语言中用来存储和操作数据的一种数据结构。
它与数组相比,拥有更灵活的插入和删除操作。
链表由节点(Node)组成,每个节点包含一个数据项和一个指向下一个节点的指针。
链表的头节点是链表的起始点,尾节点则指向NULL。
LinkList的作用1.动态内存分配:链表的节点可以动态地分配和释放内存,因此链表可以根据实际需要进行动态的添加和删除操作,不受固定大小的限制。
2.插入和删除操作效率高:由于链表的特性,插入和删除操作只需要修改节点指针的指向,而不需要移动其他节点,因此链表在某些特定场景下可以比数组更高效。
3.实现高级数据结构:链表可以用来实现其他高级数据结构,比如栈(Stack)和队列(Queue),或者作为其他数据结构的底层实现。
4.提供灵活的数据结构设计:链表可以设计成单向链表、双向链表或循环链表,根据实际需求选择合适的链表结构。
LinkList的应用场景链表在许多编程问题中都有着广泛的应用,以下是一些常见的应用场景: - 线性表:链表可以实现线性表,可以用来存储和操作一组有序的数据。
- 多项式运算:链表可以用来存储和运算多项式,实现多项式的相加、相乘等操作。
- 图的表示:链表可以用来表示图的连接关系,比如邻接链表表示法。
- 高级数据结构:链表可以作为实现其他高级数据结构的基础,比如树(Tree)、图(Graph)等。
- 文件操作:链表可以用来实现文件的读取和写入操作,链表可以实现文件的增删改查等功能。
总结链表作为一种灵活和高效的数据结构,广泛应用于C语言的编程中。
通过链表,我们可以动态地分配内存,高效地进行插入和删除操作。
而且,链表还可以作为其他高级数据结构的基础实现,扩展了数据结构的功能和应用场景。
在C语言中,掌握链表的使用方法和原理,对于编写高效的程序和解决复杂的编程问题都有很大的帮助。
#ifndef LINKLIST_H_#define LINKLIST_H_//---------------------------------------------------类声明部分---------------------------------------------------template<typename LNodeElemType>struct LNode{LNodeElemType data;LNode<LNodeElemType> *next;};template<typename LNodeElemType>class LinkList{private:LNode<LNodeElemType> * head;int length;public:LinkList(); //默认构造函数LinkList(const LinkList<LNodeElemType> ©); //复制构造函数~LinkList(); //析构函数bool InitList(); //链表的初始化bool DestroyList(); //链表的销毁bool ClearList(); //链表的清空bool IsEmpty() const; //判断链表是否为空,若是则返回true,若否则返回falseint Getlength() const; //返回链表的长度bool GetElem(int position, LNodeElemType & e) const; //求指定位置的元素值bool SetElem(int position, const LNodeElemType & e); //设置指定位置的元素值int LocateElem(const LNodeElemType & e) const; //找到与指定数据相等的结点,返回结点所在链表中的位置。
c语言中linklist类型LinkList类型是C语言中常用的数据结构之一,用于表示链表。
链表是一种动态数据结构,它可以根据需要动态地分配和释放内存空间,比较灵活。
在本文中,我们将深入探讨LinkList类型及其相关操作。
一、什么是链表链表是一种由节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。
链表中的节点可以按照任意顺序存储,通过指针将它们连接起来。
与数组相比,链表的插入和删除操作更加高效,但是访问元素的效率较低。
链表分为单向链表和双向链表两种形式,本文主要介绍单向链表。
二、LinkList类型的定义在C语言中,我们通过结构体来定义链表节点的数据结构,具体定义如下:```ctypedef struct Node{int data;struct Node *next;}Node;typedef Node *LinkList;```其中,Node表示链表的节点类型,LinkList表示链表的类型。
三、LinkList类型的常用操作1. 初始化链表初始化链表主要是将链表的头指针置空,表示链表为空。
具体实现如下:```cvoid InitList(LinkList *L){*L = NULL;}```2. 判断链表是否为空判断链表是否为空可以通过判断链表的头指针是否为空来实现。
具体实现如下:```cint ListEmpty(LinkList L){return L == NULL;}```3. 求链表的长度求链表的长度即统计链表中节点的个数。
具体实现如下:```cint ListLength(LinkList L){int count = 0;Node *p = L;while(p != NULL){count++;p = p->next;}return count;}```4. 插入节点插入节点可以在链表的任意位置插入新的节点。
具体实现如下:```cint ListInsert(LinkList *L, int pos, int data){if(pos < 1 || pos > ListLength(*L) + 1){return 0;}Node *p = *L;Node *newNode = (Node*)malloc(sizeof(Node));newNode->data = data;newNode->next = NULL;if(pos == 1){newNode->next = *L;*L = newNode;}else{for(int i = 1; i < pos - 1; i++){p = p->next;}newNode->next = p->next;p->next = newNode;}return 1;}```5. 删除节点删除节点可以删除链表中指定位置的节点。
Aspcms各个文件功能介绍全文模版目录说明模版目录位于templates下,默认的是cn模版html目录为模版文件存放的目录ASPCMS系统支持不同栏目采用不同的模板,并且可以自己新建栏目,无需修改ASP文件。
1.头部固定模板为 head.html ,固定调用标签 {aspcms:top}2.底部固定模板为 foot.html ,固定调用标签 {aspcms:foot}3.辅助模版名称可以自己定义,如 left.html ,调用辅助模版的标签为:{aspcms:template src=left.html}网站通用标签单篇文章调用1、首页单篇内容调用{aspcms:about sort=8 }[about:info len=80][about:title][about:link]{/aspcms:about}说明:sort=8单篇文章的栏目id[about:info len=80] 单篇文章内容,len表示截取的长度[about:title]单篇文章的标题[about:link] 单篇文章的链接2、单篇文章页调用(在about.html页标签的调用){aspcms:top} 调用头部{aspcms:template src=left.html} 调用辅助模版{aspcms:sortname} 单篇文章的栏目名称您的位置:首页{aspcms:position} > [position:link]{/aspcms:position} [about:title] 单篇文章标题[about:info] 单篇文章详细内容列表页的调用A.列表页调用标签{aspcms:sorttitle}标题在添加分类时设置{aspcms:sortkeyword}关键词在添加分类时设置{aspcms:sortdesc}描述在添加分类时设置{aspcms:sortname}栏目名称{aspcms:list size=10 order=id}[list:link]链接[list:i]计数[list:titlecolor]标题颜色[list:sortname]分类名称[list:sortlink]分类链接[list:date]日期[list:visits]浏览次数[list:author]作者[list:source]来源[list:tag]tag标签[list:istop]置顶[list:isrecommend]推荐[list:isimage]图片新闻[list:isfeatured]特别推荐[list:isheadline]头条[list:pic]图片{/aspcms:list}[list:pagenumber len=5] 分页条调用标签B.当前位置首页{aspcms:position} >>[position:link]{/aspcms:position}首页 >>新闻发布 >>公司新闻详细页调用1、首页调用{aspcms:content sort=2 num=4 order=order star=1}[content:title]标题[content:link]链接[content:i]计数[content:titlecolor]标题颜色[content:sortname]分类名称[content:sortlink]分类链接[content:date]日期[content:visits]浏览次数[content:author]作者[content:source]来源[content:tag]tag标签[content:istop]置顶[content:isrecommend]推荐[content:isimage]图片新闻[content:isfeatured]特别推荐[content:isheadline]头条[content:desc]描述[content:pic]图片{/aspcms:content}sort 分类IDnum 显示数量order 排序规则 ispic是否是图片order id visits time star 星级(1,2,3,4,5)2、详细页调用[content:title]标题[content:link]链接[content:i]计数[content:titlecolor]标题颜色[content:sortname]分类名称[content:sortlink]分类链接[content:date]日期[content:visits]浏览次数[content:author]作者[content:source]来源[content:tag]tag标签[content:istop]置顶[content:isrecommend]推荐[content:isimage]图片新闻[content:isfeatured]特别推荐[content:isheadline]头条[content:desc]描述[content:pic]图片{aspcms:comment} 评论标签上一篇:{aspcms:prev}下一篇:{aspcms:next}C、多图片的处理count 输出数量,小于1或者不为数字的作为0处理,不输出contentid 输出的内容id,一般在内容页调用,只需填写contentid=[content:id]即可,错误的输入被赋值为-1[cimages:src] 将被替换为/upLoad/product/month_1107/201107011448421775.png等数据循环输出Head部分栏目调用:{aspcms:navlist}∙[navlist:name]{if:[navlist:subcount]>0}{aspcms:subnavlist type=[navlist:sortid]}∙[subnavlist:name]{/aspcms:subnavlist}{end if}{/aspcms:navlist}辅助模版栏目调用:{aspcms:navlist type={aspcms:topsortid}}∙[navlist:name]{/aspcms:navlist}if标签的使用IF标签使用1、满足条件则显示{if:条件语句}显示内容{end if}2、满足条件则显示内容1,否则显示内容2{if:条件语句}显示内容1{else}显示内容2{end if}实例:1,给满足条件的添加不同的样式{aspcms:content}<A&NBSP;{IF:[CONTENT:I]=1} if} link="[content:link]"{end>[content:title]{/aspcms:content}2,显示当前栏目的样式{if:[navlist:sortid]=[navlist:cursortid]}class="nav_off"{else}cla ss="nav_on"{end if}统计标签统计标签今日{visits:today}昨日{visits:yesterday}本月{visits:month}全部{visits:all}友情链接标签调用文字链接{aspcms:linklist type=font}∙[linklist:name]{/aspcms:linklist}调用图片链接{aspcms:linklist type=pic}∙{/aspcms:linklist}type=all 或去掉type属性调用全部的链接tag标签TAG标签内容调用(和内容调用一样,只需要加一个tag属性)标签相关内容调用{aspcms:content sort=2 num=4 order=order tag=aspcms,asp,php star=1} [content:title]标题{/aspcms:content}标签列表调用{aspcms:taglist size=50 order=visits}[taglist:link][taglist:title]{/aspcms:taglist}[taglist:pagenumber len=5] 分页条调用标签order可选值visits,time,id会员功能调用首页调用可以参照模版login.html会员登录后显示用户在线可以用js实现loginyes.asp可以自己建立,位于member目录下代码内容为:document.write("/member/login.asp\" style=\"color:#1c97c0\">[请登录]")document.write("/member/reg.asp\" style=\" color:#1c97c0\">[注册]")document.write("欢迎您, ")document.write(" ")document.write("! | ");document.write("/member/editPass.asp\" style=\"color:#1c97c0\">修改资料");document.write(" | ");document.write("/member/login.asp?action=logout\"style=\"color:#1c97c0\">退出登录");document.write(" |");。
//这只是一个模板,没有任何输出,可以按照个人的喜好对程序进行个性化的输出// 头文件”LinkList.h”如下
#ifndef LINKLIST_H
#define LINKLIST_H
template <typename Type> class Node
{
//friend class LinkList;
public:
Node();
Node(const Type &item);
~Node();
Type data;
Node<Type> *next;
};
template <typename Type> class LinkList
{
public:
LinkList();
~LinkList();
int length();
bool empty(){ return head->next == NULL; }
Node<Type> *getHead(){ return head; }
Type getElem(int i);
Type operator[](int i);
LinkList& operator=(LinkList& SrcList);
void makeEmpty();
void push_back(const Type &val);
void pop_back();
private:
Node<Type> *head;
};
template <typename Type> Node<Type>::Node(): next(NULL)
{
}
template <typename Type> Node<Type>::Node(const Type &data) : data(data), next(NULL) {
}
template <typename Type> Node<Type>::~Node()
{
}
template <typename Type> LinkList<Type>::LinkList()
{
head = new Node<Type>();//create a head node
}
template <typename Type> LinkList<Type>::~LinkList()//no implement
{
makeEmpty();
delete head;
}
template <typename Type> int LinkList<Type>::length()
{
int i = 0;
Node<Type> *ptr = head;
while(ptr->next != NULL)
{
ptr = ptr->next;
i++;
}
return i;
}
template <typename Type> Type LinkList<Type>::getElem(int i)
{
Node<Type> *ptr = head->next;
int j;
for(j = 0; j < i; j++)
{
ptr = ptr->next;
}
return ptr->data;
}
template <typename Type> void LinkList<Type>::makeEmpty()
{
if(head->next == NULL)
return;
Node<Type> *ptr;
while(head->next != NULL)
{
ptr = head->next;
head->next = ptr->next;
delete ptr;
}
}
template <typename Type> void LinkList<Type>::push_back(const Type &val) {
Node<Type> *newNode = new Node<Type>(val);
Node<Type> *back;
back = head;
while(back->next != NULL) //找到尾部节点
back = back->next;
back->next = newNode;
}
template <typename Type> Type LinkList<Type>::operator[](int i)
{
return getElem(i);
}
//A=B
template <typename Type>
LinkList<Type>& LinkList<Type>::operator=(LinkList& SrcList)
{
makeEmpty();
Node<Type> *ptr= SrcList.getHead();
ptr = ptr->next; //头节点不复制
while(ptr != NULL)
{
this->push_back(ptr->data);
ptr = ptr->next ;
}
return *this;
}
template <typename Type> void LinkList<Type>::pop_back( ) {
Node<Type> *back;
back = head;
if(back->next != NULL)
{
while(back->next->next != NULL) //找到尾部节点back = back->next;
delete back->next;
back->next = NULL;
}
}
#endif
//主函数文件”main.cpp”
#include <iostream>
#include <string>
#include "LinkList.h"
using namespace std;
int main()
{
/*
LinkList<string> *L1 = new LinkList<string>;
//int val;
L1->push_back("asdfsadfas");
L1->push_back("sdfsadfasdf");
*/
LinkList<int> *L = new LinkList<int>;
//int val;
L->push_back(3);
L->push_back(5);
L->pop_back();
LinkList<int> CopyedList;
CopyedList = *L;
return 0;
}。