|
Fatal error C1083: Cannot open include file
I'm using Visual Studio 2005
I have this:
BNode.
#include "stdafx.h"
template<typename sometype>
class BNode
{
private:
BNode<sometype> *father;
BNode<sometype> *left;
BNode<sometype> *right;
sometype dato;
public:
BNode(const sometype & dato,BNode<sometype> * father = NULL,
BNode<sometype>*leftson=NULL,BNode<sometype> *rightson=NULL);
BNode<sometype> * getleft()const;
BNode<sometype> * getright()const;
BNode<sometype> * getfather()const;
sometype getdato()const;
void setleft(BNode<sometype> * leftson);
void setright(BNode<sometype> * rightson);
void setfather(BNode<sometype> * father);
bool hastwosons()const;
bool hasleftson()const;
bool hasrightson()const;
void setdato(const sometype & dato);
void showdato()const;
};
template<typename sometype>
BNode<sometype>::BNode(const sometype &dato,BNode<sometype> * father, BNode<sometype> *leftson, BNode<sometype> *rightson)
{
this->father = father;
this->dato = dato;
this->left = leftson;
this->right = rightson;
}
template<typename sometype>
BNode<sometype> * BNode<sometype>::getfather() const
{
return this->father;
}
template<typename sometype>
BNode<sometype> * BNode<sometype>::getleft() const
{
return this->left;
}
template<typename sometype>
BNode<sometype> * BNode<sometype>::getright() const
{
return this->right;
}
template<typename sometype>
sometype BNode<sometype>::getdato() const
{
return this->dato;
}
template<typename sometype>
void BNode<sometype>::setfather(BNode<sometype> *father)
{
this->father = father;
}
template<typename sometype>
void BNode<sometype>::setleft(BNode<sometype> *leftson)
{
this->left = leftson;
}
template<typename sometype>
void BNode<sometype>::setright(BNode<sometype> *rightson)
{
this->right = rightson;
}
template<typename sometype>
void BNode<sometype>::setdato(const sometype &dato)
{
this->dato;
}
template<typename sometype>
void BNode<sometype>::showdato() const
{
cout<<this->dato;
}
template<typename sometype>
bool BNode<sometype>::hastwosons() const
{
return (this->left != NULL && this->right != NULL);
}
template<typename sometype>
bool BNode<sometype>::hasleftson() const
{
return (this->left != NULL);
}
template<typename sometype>
bool BNode<sometype>::hasrightson() const
{
return (this->right != NULL);
}
which works fine.
&& i have
BST
#include "stdafx.h"
#include "BNode.h"
template<typename sometype, typename keytype>
class BST
{
protected:
Bnode<sometype> * root;
Bnode<sometype> * copySubtree(Bnode<sometype> * root);
Bnode<sometype> * founddata(Bnode<sometype> * root, const keytype & key)const;
void showinorder(Bnode<sometype> * root)const;
bool insertdata(Bnode<sometype> * root, const sometype & dato);
void empty(Bnode<sometype> * root);
public:
BST();
BST(const BST<sometype,keytype> & aBSTtree);
~BST();
bool insertDato(const sometype & dato);
bool hasDato(const keytype key)const;
sometype getdato(const keytype key)const;
bool isEmpty()const;
void empty();
void showInOrder()const;
void showPreOrder()const;
void showPostOrder()const;
bool removeDato(const keytype & key);
bool copySubTree(BST<sometype,keytype> & aBSTtree);
};
template<typename sometype, typename keytype>
BST<sometype,keytype>::BST()
{
this->root=NULL;
}
template<typename sometype, typename keytype>
BST<sometype,keytype>::BST(const BST<sometype,keytype> &aBSTtree)
{
this->root = this->copySubtree(aBSTtree.root);
}
template<typename sometype, typename keytype>
Bnode<sometype> * BST<sometype,keytype>::copySubtree(Bnode<sometype> *root)
{
Bnode<sometype> *newRoot=NULL;
if(root != NULL)
{
root = new BNode<sometype>(root->getDato());
newRoot->setleft(this->copySubtree(root->getleft()));
newRoot->setright(this->copySubtree(root->getright()));
}
return newRoot;
}
template<typename sometype, typename keytype>
BST<sometype,keytype>::~BST()
{
this->empty();
}
template<typename sometype, typename keytype>
bool BST<sometype,keytype>::insertDato(const sometype &dato)
{
bool inserted = true;
if(root != NULL)
inserted = this->insertdata(this->root,dato);
else
this->root = new Bnode<sometype>(dato);
return inserted;
}
template<typename sometype, typename keytype>
bool BST<sometype,keytype>::hasDato(const keytype key) const
{
return (this->founddata(this->root, key));
}
template<typename sometype, typename keytype>
sometype BST<sometype,keytype>::getdato(const keytype key) const
{
return this->founddata(this->root,key)->getdato();
}
template<typename sometype, typename keytype>
bool BST<sometype,keytype>::isEmpty() const
{
return (this->root==NULL);
}
template<typename sometype, typename keytype>
void BST<sometype,keytype>::empty()
{
this->empty(this->root);
this->root = NULL;
}
template<typename sometype, typename keytype>
void BST<sometype,keytype>::showInOrder() const
{
this->showinorder(this->root);
}
template<typename sometype, typename keytype>
void BST<sometype,keytype>::showinorder(Bnode<sometype> *root) const
{
if(root != NULL)
{
this->showinorder(root->getleft());
cout<<root->getdato()<<endl;
this->showinorder(root->getright());
}
}
template<typename sometype, typename keytype>
void BST<sometype,keytype>::showPostOrder() const
{
}
template<typename sometype, typename keytype>
void BST<sometype,keytype>::showPreOrder() const
{
}
template<typename sometype, typename keytype>
bool BST<sometype,keytype>::removeDato(const keytype & key)
{
bool removed = false;
Bnode<sometype> * nodeToDelete, * sustituto;
nodeToDelete = this->founddata(this->root,key);
if(nodeToDelete != NULL)
{
if(nodeToDelete->hastwosons())
{
sustituto= nodeToDelete->getleft();
if(sustituto->hasrightson())
{
while(sustituto->hasrightson() != NULL)
sustituto = sustituto->getright();
sustituto->getfather()->setright(sustituto->getleft());
if(sustituto->hasleftson())
sustituto->getleft()->setfather(sustituto->getfather());
sustituto->setleft(nodeToDelete->getleft());
nodeToDelete->getleft()->setfather(sustituto);
}
sustituto->setright(nodeToDelete->getright());
nodeToDelete->getright()->setfather(sustituto);
sustituto->setfather(nodeToDelete->getfather());
if(nodeToDelete == this->root)
this->root = sustituto;
else
nodeToDelete->getfather()->setleft(sustituto);
}
else
{
if(nodeToDelete!=this->root && nodeToDelete->hasleftson())//area changed
{
sustituto = nodeToDelete->getleft();
if(nodeToDelete->getfather()->getleft() == nodeToDelete)
{
if(nodeToDelete != this->root)
nodeToDelete->getfather()->setleft(sustituto);
sustituto->setfather(nodeToDelete->getfather());
}
else
{
if(nodeToDelete != this->root)
nodeToDelete->getfather()->setright(sustituto);
sustituto->setfather(nodeToDelete->getfather());
}
}
else
if(nodeToDelete!=this->root && nodeToDelete->hasrightson())//area changed
{
sustituto = nodeToDelete->getright();
if(nodeToDelete->getfather()->getleft() == nodeToDelete)
{
if(nodeToDelete != this->root)
nodeToDelete->getfather()->setleft(sustituto);
sustituto->setfather(nodeToDelete->getfather());
}
else
{
if(nodeToDelete != this->root)
nodeToDelete->getfather()->setright(sustituto);
sustituto->setfather(nodeToDelete->getfather());
}
if(nodeToDelete == this->root)
this->root = sustituto;
}
else
{
if(nodeToDelete != this->root)
if(nodeToDelete->getfather()->getleft() == nodeToDelete)
nodeToDelete->getfather()->setleft(NULL);
else
nodeToDelete->getfather()->setright(NULL);
else
this->root= NULL;
}
}
delete nodeToDelete;
removed = true;
}
return removed;
}
template<typename sometype, typename keytype>
void BST<sometype,keytype>::empty(Bnode<sometype> *root)
{
if(root != NULL)
{
this->empty(root->getleft());
this->empty(root->getright());
delete root;
}
}
template<typename sometype, typename keytype>
Bnode<sometype> * BST<sometype,keytype>::founddata(Bnode<sometype> *root, const keytype &key) const
{
Bnode<sometype> * found = NULL;
if(root != NULL)
if(root->getdato().getkey() > key)
found = this->founddata(root->getleft(),key);
else
if(root->getdato().getkey() < key)
found = this->founddata(root->getright(),key);
else
found = root;
return found;
}
template<typename sometype, typename keytype>
bool BST<sometype, keytype>::insertdata(Bnode<sometype> *root, const sometype &dato)
{
bool inserted = false;
if(root->getdato().getkey() > dato.getkey())
if(root->hasleftson())
inserted = this->insertdata(root->getleft(),dato);
else
{
root->setleft(new Bnode<sometype>(dato,root));
inserted = true;
}
else
{
if(root->getdato().getkey()< dato.getkey())
if(root->hasrightson())
inserted = this->insertdata(root->getright(),dato);
else
{
root->setright(new Bnode<sometype>(dato,root));
inserted = true;
}
}
return inserted;
}
but i keep getting this error when compiling BST:
Error 1 fatal error C1083: Cannot open include file: 'BNode.h': No such file or directory c:\documents and settings\marita\my documents\visual studio 2005\projects\test\test\test.cpp 17
WHAT could it be?
Last edited by admin : 24-May-2006 at 09:22.
Reason: Please insert your C code between [c] & [/c] tags
|