首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一段简单的代码,奇怪的有关问题

2012-04-13 
一段简单的代码,奇怪的问题C/C++ code#include iostreamtemplatetypename Tclass Node{public:T data

一段简单的代码,奇怪的问题

C/C++ code
#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;}


在构造的时候,打印出next指针是00000000,输出长度的时候,打印head的next却不是0。
这段代码是崩溃的。

[解决办法]
C/C++ code
SinglyLinkedList(Node<T> value) : head(&value) //构造由指定的数组提供的单链表    {    } 

热点排行