Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Vkaral sym dinamichni masivi ama ne raboti
- #include <iostream>
- #include <string>
- 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();
- if(numberOfPeople>1)
- {
- testDynamicArray1 = new struct Node*[numberOfPeople];
- for(int i =0; i<numberOfPeople;i++)
- {
- testDynamicArray1[i] = DynamicArray[i];
- delete DynamicArray;
- }
- testDynamicArray1[numberOfPeople-1] = addNode(testDynamicArray1[numberOfPeople-1]);
- DynamicArray = new struct Node*[numberOfPeople];
- for(int i =0; i<numberOfPeople-1;i++)
- {
- DynamicArray[i] = testDynamicArray1[i];
- cout << " FOR _-------- dynamic array: "<< DynamicArray[i]->data<< endl;
- delete testDynamicArray1;
- }
- }
- else
- DynamicArray[0] = addNode(DynamicArray[0]);
- cout << DynamicArray[0]->data << endl;
- break;
- case 2:
- //traverseNodes(DynamicArray[0]);
- for(int i =0; i<=numberOfPeople;i++)
- {
- cout << "iteraciq print "<< i << endl;
- traverseNodes(DynamicArray[i]);
- }
- break;
- case 3:
- loop = 0;
- break;
- default:
- break;
- }
- }
- }
Add Comment
Please, Sign In to add comment