欢迎来到天天文库
浏览记录
ID:37910759
大小:114.50 KB
页数:13页
时间:2019-06-02
《C++数据结构_链表》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1,这是使用C++编写的单链表,链表栈,链表队列,采用了模板技术。2,由于这只是本人验证学习而编写的,所以漏洞是难免的。3,这些程序都在VC6.0通过编译(控制台工程),并进行了基本调试,可以正常运行。4,这些内容只做为参考,对基可靠性,复杂度没有测试过。5,当然,由于本人只是学生,所以其中的算法并不可靠,优秀,还忘大家指导。链表.h源文件#ifndeflist_h#definelist_h#include#includeusingnamespacestd;templateclasssinglelist{public:single
2、list();//初始化链表~singlelist(){deletephead;//释放链表内存}boolInsert_tail(Typem);//向尾部增加数据mboolInsert_app(intn,Typem);//在指定位置n插入数据mboolInsert_all(Typen,Typem);//在指定数据n的位置插入数据m,对所有n数据位置插入voidoutput_data();//输出表中的数据intoutput_long();//输出表中元素个数,不包含头结点boolDelete_app(intn,Type&m);//删除n指定位置的元素,并赋给mboolDelete_all(
3、Typem);//删除表中所有数据为m的元素Typeselect_app(intn);//查找n指定数据的数据intselect_all(Typem);//查找数据m在表中的总个数boolmodify_app(intn,Typem);//将n指定位置的数据修改成mboolmodify_all(Typen,Typem);//将表中所有数据为n的数据修改为mboolreplication_out(singlelist&table);//将表中的数据复制给table表boolreplication_into(singlelist&table);//将table中的数据复制到表中voidsort_
4、l();//对表中数据进行升序voidsort_drop();//对表中数据进行降序voidfilter();//过滤表中重复的数据voidempty();//清空表中的数据private:boolPosition(intn);//将p指向n指定的位置structNode//结点数据类型{Typedata;//数据域structNode*pt;//指向域};structNode*phead;//头指针structNode*ptail;//尾指针structNode*p;//插入删除位置指针intlon;//记录链表长度};templatesinglelist5、>::singlelist()//初始化链表{phead=newstructNode;//初始化链表if(phead){//如果内存分配成功就初始数据成员phead->pt=NULL;ptail=phead;//初始化尾结点p=NULL;//初始插入删除位置指针lon=0;//初始长度}else{//内存分配失败,输出提示cout<<"单链表初始内存分配失败!"<boolsinglelist::Insert_tail(Typem)//向尾部增加数据m6、{structNode*p=newstructNode;//分配结点if(!p)//分配失败就返回假returnfalse;p->data=m;//分配成功就将数据m保存至结点p->pt=NULL;//将结点指向为空ptail->pt=p;//将结点挂到尾结点上ptail=p;//将尾指针重新指向尾结点lon++;//增加表长度returntrue;//增加结点完成就返回真}templateboolsinglelist::Position(intn)//返回n指定的位置{intk=1;p=phead;//每次将p重新指向头指针while(p->pt!=NU7、LL&&kpt;k++;}if(p->pt==NULL8、9、k>n10、11、n<1)//如果用户指定位置超出范围就返回假returnfalse;elsereturntrue;}templateboolsinglelist::Insert_app(intn,Typem)//在指定位置n插入数据m{if(!Position(n))//判断位置指针是否合法,不合法
5、>::singlelist()//初始化链表{phead=newstructNode;//初始化链表if(phead){//如果内存分配成功就初始数据成员phead->pt=NULL;ptail=phead;//初始化尾结点p=NULL;//初始插入删除位置指针lon=0;//初始长度}else{//内存分配失败,输出提示cout<<"单链表初始内存分配失败!"<boolsinglelist::Insert_tail(Typem)//向尾部增加数据m
6、{structNode*p=newstructNode;//分配结点if(!p)//分配失败就返回假returnfalse;p->data=m;//分配成功就将数据m保存至结点p->pt=NULL;//将结点指向为空ptail->pt=p;//将结点挂到尾结点上ptail=p;//将尾指针重新指向尾结点lon++;//增加表长度returntrue;//增加结点完成就返回真}templateboolsinglelist::Position(intn)//返回n指定的位置{intk=1;p=phead;//每次将p重新指向头指针while(p->pt!=NU
7、LL&&kpt;k++;}if(p->pt==NULL
8、
9、k>n
10、
11、n<1)//如果用户指定位置超出范围就返回假returnfalse;elsereturntrue;}templateboolsinglelist::Insert_app(intn,Typem)//在指定位置n插入数据m{if(!Position(n))//判断位置指针是否合法,不合法
此文档下载收益归作者所有