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

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

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

这是看了《数据结构、算法与应用——c++语言描述》和网上获得的一些资料后写的。原因是项目中使用了链表,但是我做一个简单的链表,在C++中使用的时候,它和C有很多区别,比如赋值操作(编译器说要做运算符重载,或者Cobbe构造函数,结构在C++中是作为类处理的。详见相关文献或书籍)。后来想到做个模板,可以顺便学习一下,一举两得。

几个问题:

CListData和CNode的函数都是内联函数,因为目前的编译器还不支持单独编译。按照《用C++思考》第十六章的解释,模板类在定义的时候没有分配内存,只是在实例化的时候分配内存,所以声明和定义可以写在头文件里(详见原文)。

因此,如果这两个文件是分开的,连接时将报告错误LNK2001。(这个问题让我痛苦了很久)

在网上和书上的例程中,通常用一个int作为例子,这给我们应用带来了不便,尤其是在我们没有完全理解template的情况下。这里我以一个类(CNodeInfo)作为节点类型的例子。

代码:

class cnode info
{
private:
int m _ Count;//计数器或者调用它PKEY:)
CString m _ strFileName;//for Store filename
DWORD m _ dwFileLen;//for存储文件长度
BOOL m _ b status;//传输状态标记;
public:
CNodeInfo();
~ CNodeInfo();
void set status(BOOL b status = FALSE);
BOOL get status();
void SetFileLen(DWORD len);
DWORD GetFileLen();
void set filename(CString str);
CString get filename();
};
//private可以理解为结构中的一个元素,比如
typedef struct _ file struct _
{
int count;
CString str filename;
DWORD dwFIleLen
BOOL b status;
}文件结构。

(如果想更通用,可以把cs String改成char或者string,在别处做相应的修改,把bool改成BOOL或者使用typedef)。

Public:如果是成员函数,就不详细描述了。比较容易。代码注释比较详细,这里就不赘述了。就写下一些我觉得不太好理解的点(希望有人能看懂我的中式英语,呵呵)

参考资料:

《数据结构、算法及应用——C++语言描述》、《用c++思考》以及网上的相关资料。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 一个简单的链表模版类的实现

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情