// Po-ranna versiq na predhnodniq kod. #include #include using namespace std; // Трите имена // Домашни и служебни адреси(индикатор за различаване) // телефони на съответните адреси // -създаване на указателя, като информацията се чете // клавиатурата // -извежда информация за броя на работещите(лицето е // е работещо, ако има поне един служебен адрес string firstName; string secondName; string lastName; string adress1; string adress2; string adress3; string phoneNumber1; string phoneNumber2; string phoneNumber3; struct Node { string data; Node *next; Node *child; }; Node *firstChild = NULL; Node *secondChild = NULL; Node *frontQ = NULL; Node *rearQ = NULL; Node *lastQ = NULL; void enqueue(struct Node *p) { Node *t = new Node; t = p; t->next = NULL; if(!t) { cout << "The heap is full." << endl; return; } if(frontQ == NULL) { frontQ = new Node; frontQ-> data = t->data; frontQ-> next = NULL; lastQ = frontQ; } else { lastQ -> next = t; lastQ = t; } cout << frontQ->data<< endl; } struct Node* addNode(struct Node* first) { first = new Node; first->data = firstName; Node* secN = new Node; secN->data = secondName; secN->child = NULL; first->next =secN; Node* lastN = new Node; lastN ->data = lastName; secN->next = lastN; lastN->child = NULL; Node* adress1Node = new Node; adress1Node->data = adress1; adress1Node->child = NULL; Node* adress2Node = new Node; adress2Node->data = adress2; adress1Node->next = adress2Node; adress2Node->child = NULL; Node* adress3Node = new Node; adress3Node->data = adress3; adress2Node->next = adress3Node; adress3Node->child = NULL; first->child = adress1Node; Node* firstNumberNode = new Node; firstNumberNode->data = phoneNumber1; firstNumberNode->next = NULL; firstNumberNode->child = NULL; Node* secondNumberNode = new Node; secondNumberNode->data = phoneNumber2; secondNumberNode->next = NULL; secondNumberNode->child = NULL; firstNumberNode->next = secondNumberNode; Node* thirdNumberNode = new Node; thirdNumberNode->data = phoneNumber3; thirdNumberNode->next = NULL; thirdNumberNode->child = NULL; adress1Node->child = firstNumberNode; adress3Node->child = thirdNumberNode; return first; } void traverseNodes(struct Node* p) { if(p==secondChild) secondChild=NULL; if(p==firstChild) firstChild = NULL; while(p) { if(p->child) { if(secondChild == NULL && firstChild!=NULL) { secondChild = p->child; //. cout << "second child ->data " << p->child->data << endl; } if(firstChild == NULL) firstChild = p->child; } cout << p->data << " "; p = p->next; } if(firstChild !=NULL || secondChild != NULL) { if(firstChild) { traverseNodes(firstChild); } if(secondChild) { //cout << " v ifa second child data " << secondChild->data << endl; traverseNodes(secondChild); // cout << " second child " << endl; } //enqueue(lastChild); } } void enterPerson() { cin.ignore(); cout << "Enter first name: " << endl; cin >> firstName; cout << "Enter second name: " << endl; cin >> secondName; cout << "Enter last name name: " << endl; cin >> lastName; //cout << "The last name is: " << lastName << endl; cout << "Enter first address: " << endl; cin >> adress1; cout << "Enter second address: " << endl; cin >> adress2; cout << "Enter third address: " << endl; cin >> adress3; cout << "Enter first phone number: " << endl; cin >> phoneNumber1; cout << "Enter second phone number: " << endl; cin >> phoneNumber2; cout << "Enter third phone number: " << endl; cin >> phoneNumber3; } int main() { typedef struct Node* *testDynamicArray; testDynamicArray testDynamicArray1; testDynamicArray1 = new struct Node*[1]; struct Node* Array[5]; struct Node* *DynamicArray; DynamicArray = new struct Node*[0]; int dynamicArraySize; int numberOfPeople = 0; int loop = 1; while(loop) { dynamicArraySize = sizeof(DynamicArray)/sizeof(DynamicArray[0]); cout << sizeof(testDynamicArray1)/sizeof(testDynamicArray1[0]) << endl; cout << "Menu: " << endl; cout << "1. Press 1 to add person" << endl; cout << "2. Press 2 to show the list" << endl; cout << "3. Press 0 to exit" << endl; int inputCommand; cin >> inputCommand; switch(inputCommand) { case 1: numberOfPeople++; enterPerson(); DynamicArray[0] = addNode(DynamicArray[0]); cout << DynamicArray[0]->data << endl; break; case 2: traverseNodes(DynamicArray[0]); case 3: loop = 0; break; } } }