Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Cây nhị phân tìm kiếm, xin hỏi lỗi gì?

  1. #1
    Ngày gia nhập
    08 2008
    Bài viết
    7

    Mặc định Cây nhị phân tìm kiếm, xin hỏi lỗi gì?

    Đây là cây nhị phân tìm kiếm.Khi chạy nó thông báo lỗi như sau;
    'CreateNewNode' : undeclared identifier
    Hàm trên em dùng để tạo nút mới,hàm sẽ trả về con trỏ trỏ tới nút mới tạo. Không hiểu sao khi đem cái con trỏ trỏ tới nút mới tạo gán vào con trỏ t(dòn bôi màu xanh) trong hàm insert(cái bôi màu đỏ) thì lại sai( cả 2 con trỏ này đều cùng trỏ tới kiểu BSNode<TYPE>).Nhưng nếu thay dòng lệnh gán ấy bằng đoạn mã sau thì vẫn đúng
    t=new BSNode<TYPE>;
    t->data = x;
    t->left = t->right = NULL;
    Xin mọi người giúp em

    Code:
    #ifndef _BSTREE_H_
    #define _BSTREE_H_
    
    template <class TYPE>
    struct BSNode
    {
        TYPE data;
        BSNode* left;
        BSNode* right;
    };
    
    template <class TYPE>
    class BSTree
    {
        private:
            BSNode<TYPE>* root;
        public:
            BSTree();//constructor
            ~BSTree();//destructor
            BSNode<TYPE>* CreateNewNode(TYPE x);
            void InsertNode(TYPE x);
            void DeleteNode(TYPE x);
    };
    
    /* Constructor */
    template <class TYPE>
    BSTree<TYPE>::BSTree()
    //Khoi tao cay rong
    {
        root = NULL;
    }
    template <class TYPE>
    /* Destructor */
    BSTree<TYPE>::~BSTree()
    {
    
    }
    
    /* Phuong thuc tao 1 node moi */
    template <class TYPE>
    BSNode<TYPE>* BSTree<TYPE>::CreateNewNode(TYPE x)
    {
        BSNode<TYPE>* pNew = new BSNode<TYPE>;
        pNew->data = x;
        pNew->left = pNew->right = NULL;
        return pNew;
    }
    
    /* Phuong thuc chen 1 node vao BSTree */
    template <class TYPE>
    void BSTree<TYPE>::InsertNode(TYPE x)
    {
        insert(root,x);
    }
    
    template <class TYPE>
    void insert(BSNode<TYPE>* &t,TYPE x)
    {
        if(t == NULL)
        {
            t = CreateNewNode(x);//???????????(Sai<:D>)
        }    
        else
        {
            if( x == t->data ) return;
            else if( x < t->data )
                insert(t->left,x);
            else
                insert(t->right,x);
        }
    }
    #endif //_BSTREE_H_
    Edit/Delete Message
    Đã được chỉnh sửa lần cuối bởi dokyan1989 : 26-03-2009 lúc 12:15 PM.

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Post đoạn main của cậu lên xem, chỗ dòng xanh đó :
    C++ Code:
    1. t = CreateNewNode< TYPE >(x);
    Cái này template deduction rồi nên bỏ thằng < TYPE > cũng chẳng sao cả.
    Còn : 'CreateNewNode' : undeclared identifier có khi nào type nhầm tên không ?

  3. #3
    Ngày gia nhập
    12 2007
    Bài viết
    48

    Sửa lại chỗ này là ok
    Code:
    template <class TYPE>
    void  BSTree<TYPE>::insert(BSNode<TYPE>* &t,TYPE x)

Các đề tài tương tự

  1. [Kiếm Thế] Kiếm Thế Ngạo Thiên Kiếm Chạy Thử Nghiệm vào 10h ngày 15/09
    Gửi bởi c0jskull trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 5
    Bài viết cuối: 29-09-2013, 10:45 AM
  2. [Kiếm Thế] Kiếm Thế Kiếm Linh Chạy Thử Nghiệm vào 10h ngày 4/7
    Gửi bởi c0jskull trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 05-07-2013, 12:16 PM
  3. [Kiếm Thế] Kiếm Thế Kiếm Linh Chạy Thử Nghiệm vào 10h ngày 4/7
    Gửi bởi c0jskull trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 03-07-2013, 10:30 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn