diff --git a/bst b/bst index ae82def670b7145618b319007006307ae9fc2d26..a8ad46d53ed66e53a2fd94d0a3cfd7cc92c5cdf7 100755 Binary files a/bst and b/bst differ diff --git a/lib/bst_lib.a b/lib/bst_lib.a index d4140fc2afb62a284a77592ffb58011e73e59bc4..e2489fc26c4197cf7546363322a51d80bb9522f6 100644 Binary files a/lib/bst_lib.a and b/lib/bst_lib.a differ diff --git a/obj/bst_lib.o b/obj/bst_lib.o index c48485e11d20846c2ffbbfee518e3df709619a17..8658372b45f8d5822c22d6bcd75affe05508302e 100644 Binary files a/obj/bst_lib.o and b/obj/bst_lib.o differ diff --git a/src/bst_lib.cpp b/src/bst_lib.cpp index 2551d46eb84dddd345f77df040d70d261a57b524..5ec8ae491f64a2585ee2f3f9fdf1570781fcda2e 100644 --- a/src/bst_lib.cpp +++ b/src/bst_lib.cpp @@ -53,15 +53,11 @@ bool Node::printInOrder(){ if(this==&nullNode){ return 0; } - std::cout << "printInOrder - 1" << std::endl; if(leftNode!=&nullNode){ - std::cout << "printInOrder - 2" << std::endl; leftNode->printInOrder(); } - std::cout << "printInOrder - 3" << std::endl; - std::cout << " " << truck << key << " " << std::endl; + std::cout << truck << " " << key << std::endl; if(rightNode!=&nullNode){ - std::cout << "printInOrder - 4" << std::endl; rightNode->printInOrder(); } return 1; @@ -69,33 +65,22 @@ bool Node::printInOrder(){ Node* Tree::createNode(int key, string truck, Node *father){ Node *aux=new Node; - std::cout << "createNode - 1" << std::endl; aux->setKey(key); - std::cout << "createNode - 2 " << key << std::endl; aux->setTruck(truck); - std::cout << "createNode - 3" << std::endl; aux->setLeftNode(&nullNode); - std::cout << "createNode - 4" << std::endl; aux->setRightNode(&nullNode); - std::cout << "createNode - 5" << std::endl; aux->setFatherNode(father); return aux; } Node* Tree::insertNode(int key, string truck, Node *father, Node *current){ if(current==&nullNode){ - std::cout << "insertNode - 1" << std::endl; - cout << current << endl; current=createNode(key, truck, father); - cout << current << endl; }else if(current->getKey() > key){ - std::cout << "insertNode - 2" << std::endl; current->setLeftNode(insertNode(key, truck, current, current->getLeftNode())); }else if(current->getKey() < key){ - std::cout << "insertNode - 3" << std::endl; current->setRightNode(insertNode(key, truck, current, current->getRightNode())); }else{ - std::cout << "Chave ocupada!" << std::endl; return &nullNode; } return current; @@ -103,16 +88,12 @@ Node* Tree::insertNode(int key, string truck, Node *father, Node *current){ Node* Tree::binarySearch(int key, Node *current){ if(current==&nullNode){ - std::cout << "binarySearch - 1" << std::endl; return(&nullNode); }else if(current->getKey() > key){ - std::cout << "binarySearch - 2" << std::endl; return(binarySearch(key,current->getLeftNode())); }else if(current->getKey() < key){ - std::cout << "binarySearch - 3" << std::endl; return(binarySearch(key, current->getRightNode())); }else if(current->getKey() == key){ - std::cout << "binarySearch - 4" << std::endl; return(current); } return(&nullNode); diff --git a/src/main.cpp b/src/main.cpp index 0ec1268c1047eccb2c13c53f97063d36ef9dfc53..c903a2d8ed21a6ac5b84de5d8bec627fe6020e06 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -10,24 +10,30 @@ Node nullNode; int main(int argc, char *argv[]) { Tree binaryTree; - string input, auxTruck; - int auxKey; - + string answer, truck="ready"; + int requestedTime, currentTime; + binaryTree.root=&nullNode; while (1) { - cin >> input; - if(input == "insert"){ - cin >> auxTruck; - cin >> auxKey; - if(binaryTree.binarySearch(auxKey, binaryTree.root) == &nullNode){ - cout << binaryTree.root << endl; - binaryTree.root=binaryTree.insertNode(auxKey, auxTruck, &nullNode, binaryTree.root); - cout << binaryTree.root << endl; - } - }else if(input == "print"){ + cin >> currentTime; + std::cin.clear(); + cin >> truck; + if(truck=="exit") break; + if(truck == "print"){ binaryTree.root->printInOrder(); + }else{ + cin >> requestedTime; + if (requestedTime < currentTime) { + answer="NOK"; + }else if((binaryTree.binarySearch(requestedTime, binaryTree.root) == &nullNode)&&(binaryTree.binarySearch(requestedTime-1, binaryTree.root) == &nullNode)&&(binaryTree.binarySearch(requestedTime-2, binaryTree.root) == &nullNode)){ + binaryTree.root=binaryTree.insertNode(requestedTime, truck, &nullNode, binaryTree.root); + answer="OK"; + }else{ + answer="NOK"; + } } + if(truck != "print") std::cout << truck << "," << answer << std::endl; } return 0; diff --git a/teste.txt b/teste.txt new file mode 100644 index 0000000000000000000000000000000000000000..639460cefe598abcbd3b6bf01056293fba30cf88 --- /dev/null +++ b/teste.txt @@ -0,0 +1,9 @@ +1 A 49 +2 B 79 +3 C 46 +4 D 71 +5 X 9 +15 E 72 +36 F 23 +print +exit