一个简朴的链表模版类的实现
当前位置:以往代写 > C/C++ 教程 >一个简朴的链表模版类的实现
2019-06-13

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

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

这是翻阅《数据布局、算法与应用——C++语言描写》 以及在网上获得的一些资料后写出来的。起因是在项目中要用到一个链表,但我做一个简朴的链表在C++顶用的时候跟C不同许多,好比赋值运算(编译器说要做操纵符重载,可能考贝结构函数,C++中把布局当成一个类来看了,详见相关先容的文档或书籍)。厥后一想爽性做个template顺便进修一下,一举两得。

几个问题:

CListData和CNode的函数均为内联函数(inline),因为今朝的编译器仍不支持疏散编译。按《Thinking in C++》一书第16章中的表明是,模版类在界说的时候并没有对内存举办分派置,而是到实例化的环境下才分派内存,因此可以把声明和界说都写在头文件(详见原文)。

因此,假如将两个文件疏散则在毗连时报错LNK2001。(这问题把我搞得疾苦了好一阵)

在网上及书上的例程中凡是是以一个int做为例子,这使得在我们应用的时候很不利便,出格是在不完全领略template的时候。在这里我以一个类(CNodeInfo)作一个节点范例的例子。

代码:

class CNodeInfo
{
private:
  int      m_Count;//Counter or call it PKEY:)
  CString    m_strFileName;//for Store filename
  DWORD    m_dwFileLen;//for store file length
  BOOL    m_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 dwFIleLen
  BOOL  bStatus;
}FILESTRUCTURE.

(假如你想把它改得更通用可以把CString换成char 可能string,其他处所再作相应修改,把BOOL 改成 bool可能用typedef一下)。

Public:是成员函数就不细描写了。较量简朴了。代码中注释较量具体,我在这就不写得很细了,把一些我本身认为不容易弄大白的处所写一下就是了(但愿有人能读懂我的中式英文,嘿嘿)

参考资料:

《数据布局、算法与应用——C++语言描写》《Thinking in C++》以及网络上相关资料。

本文配套源码

    关键字:

在线提交作业