一个简单的链表模版类的实现

killyufeng

killyufeng

2016-01-29 12:24

一个简单的链表模版类的实现,一个简单的链表模版类的实现

一个简单的链表模版类的实现


作者:Smoke

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/cyuyanjiaocheng/)


源代码下载

    这是翻阅《数据结构、算法与应用——C++语言描述》以及在网上得到的一些资料后写出来的。起因是在项目中要用到一个链表,但我做一个简单的链表在C++中用的时候跟C差别很多,比如赋值运算(编译器说要做操作符重载,或者考贝构造函数,C++中把结构当成一个类来看了,详见相关介绍的文档或书籍)。后来一想干脆做个template顺便学习一下,一举两得。
几个问题:
CListData和CNode的函数均为内联函数(inline),因为目前的编译器仍不支持分离编译。按《Thinking in C++》一书第16章中的解释是,模版类在定义的时候并没有对内存进行分配置,而是到实例化的情况下才分配内存,因此可以把声明和定义都写在头文件(详见原文)。
因此,如果将两个文件分离则在连接时报错LNK2001。(这问题把我搞得痛苦了好一阵)
在网上及书上的例程中通常是以一个int做为例子,这使得在我们应用的时候很不方便,特别是在不完全理解template的时候。在这里我以一个类(CNodeInfo)作一个节点类型的例子。
代码:

class CNodeInfo{private:intm_Count;//Counter or call it PKEY:)CStringm_strFileName;//for Store filenameDWORDm_dwFileLen;//for store file lengthBOOLm_bStatus;//Transfers status tag;public:    CNodeInfo();~CNodeInfo();void SetStatus(BOOL bStatus = FALSE);BOOL GetStatus();void SetFileLen(DWORD len);DWORD GetFileLen();void SetFileName(CString str);CString GetFileName();};//private 为数大家可以理解成结构中的元素如:typedef struct _FILESTRUCT_{int count;CString strFileName;DWORD dwFIleLenBOOLbStatus;}FILESTRUCTURE.

(如果你想把它改得更通用可以把CString换成char 或者string,其他地方再作相应修改,把BOOL 改成 bool或者用typedef一下)。
Public:是成员函数就不细描述了。比较简单了。代码中注释比较详细,我在这就不写得很细了,把一些我自己认为不容易弄明白的地方写一下就是了(希望有人能读懂我的中式英文,嘿嘿)

参考资料:
《数据结构、算法与应用——C++语言描述》《Thinking in C++》以及网络上相关资料。
展开更多 50%)
分享

猜你喜欢

一个简单的链表模版类的实现

C语言教程 C语言函数
一个简单的链表模版类的实现

VC中定义一个链表类

编程语言 网络编程
VC中定义一个链表类

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

一个简单的数据操作类

Web开发
一个简单的数据操作类

一个简单的AJAX请求类

Web开发
一个简单的AJAX请求类

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

一个打印报表的简单的类

C语言教程 C语言函数
一个打印报表的简单的类

一个用PHP实现的UBB类!

PHP
一个用PHP实现的UBB类!

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Windows下SVN配置和apache的配置

Windows下SVN配置和apache的配置

JSP的9种基本内置组件

JSP的9种基本内置组件
下拉加载更多内容 ↓