【重要修改】原书的缺省构造函数是这样的node() : data(null), link(null) {} 。我原来也是照着写的,结果当我做扩充时发现这样是不对的。当type为结构而不是简单类型(int、……),不能简单赋null值。这样做使得定义的模板只能用于很少的简单类型。显然,这里应该调用type的缺省构造函数。 这也要求,用在这里的类一定要有缺省构造函数。在下面可以看到构造链表时,使用了这个缺省构造函数。当然,这里是约定带表头节点的链表,不带头节点的情况请大家自己思考。
【闲话】请不要对int *p = new int(1);这种语法有什么怀疑,实际上int也可以看成一种class。
单链表类
#ifndef list_h
#define list_h
#ifndef ture
#define ture 1
#endif
#ifndef false
#define false 0
#endif
typedef int bool;
#include "node.h"
template <class type> class list //单链表定义
{