一段简单的代码,奇怪的问题
#include <iostream>template<typename T>class Node{public: T data; //数据 Node<T> *next; //next指针 //Node() : next(NULL) //构造空的节点 //{} Node(T data) : data(data), next(NULL) //构造一个节点 {} //Node(T &data) : data(data), next(NULL) //构造一个节点 //{}};template<typename T>class SinglyLinkedList //单链表类{public: Node<T> *head; //单链表的头指针 //SinglyLinkedList() : head(NULL) //构造空的单链表 //{} SinglyLinkedList(Node<T> value) : head(&value) //构造由指定的数组提供的单链表 { } //SinglyLinkedList(const SinglyLinkedList<T> &other) : head(other.head) // 复制构造函数 //{} //~SinglyLinkedList() //析构 //{} bool isEmpty() //判断是否为空 { if (NULL == head) { return false; } return true; } int length() const //获取长度 { int n = 0; Node<T> *p = head; while (NULL != p) { p = p->next; n++; } return n; } //Node<T>* getNode(int i); //返回第i(i>=0)个节点指针 //T get(int i); //返回第i个元素 //bool set(int i,T x);//设置第i个元素为x //template<typename T> friend std::ostream& operator<<(std::ostream& out,SinglyLinkedList<T> &list); //Node<T>* insert(int i,T x); //插入第I个节点并返回第i个节点的指针 //bool remove(int i,T& old); //删除第i个元素,将删除的元素存放到old //void clear(); //清空单链表 //void concat(SinglyLinkedList<T> &list); //将List链接在当前单链表之后};int main(int argc, char* argv[]){ Node<int> node(5); SinglyLinkedList<int> intList(node); std::cout << intList.length(); getchar(); return 0;}
SinglyLinkedList(Node<T> value) : head(&value) //构造由指定的数组提供的单链表 { }