Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- Developed By InformaticageNJP
- https://www.youtube.com/c/InformaticageNJP
- **/
- #include <iostream>
- #include <cstdlib>
- using namespace std;
- struct person
- {
- string name;
- int age;
- person *next;
- };
- void sort_list(person **person_list);
- person *add_person(person *person_list);
- void show_persons(person *person_list);
- int main()
- {
- person *head = NULL;
- char choice;
- do
- {
- system("cls");
- cout << "A) Aggiungi persona " << endl;
- cout << "S) Stampa lista " << endl;
- cout << "O) Ordina lista " << endl;
- cout << "C) Chiudi applicazione " << endl;
- cin >> choice;
- choice = toupper(choice);
- switch(choice)
- {
- case 'A':
- head = add_person(head);
- break;
- case 'S':
- show_persons(head);
- break;
- case 'O':
- sort_list(&head);
- break;
- case 'C':
- break;
- default:
- cout << "Scelta non contemplata." << endl;
- }
- system("Pause");
- }while(choice != 'C');
- return EXIT_SUCCESS;
- }
- person *add_person(person *person_list)
- // Aggiunge una persona alla lista concatenata
- {
- person *next_person = NULL;
- person *prev_person = NULL;
- if(person_list == NULL)
- // Se la lista è vuota
- {
- if((person_list = new person) != NULL)
- // se creiamo una nuova persona con successo
- {
- next_person = person_list;
- cout << "Nome persona: ";
- cin >> next_person->name;
- cout << "Eta' persona: ";
- cin >> next_person->age;
- next_person->next = NULL;
- }
- else
- // Se non viene alloccata la memoria con successo
- {
- cout << "Errore: Impossibile occupare la memoria." << endl;
- return NULL;
- }
- return next_person;
- }
- else
- // Se la lista non è vuota
- {
- next_person = person_list;
- while(next_person->next != NULL)
- // Fino a che non arriviamo alla fine della lista
- {
- next_person = next_person->next;
- }
- prev_person = next_person;
- if((next_person = new person) != NULL)
- // se creiamo una nuova persona con successo
- {
- prev_person->next = next_person;
- cout << "Nome persona: ";
- cin >> next_person->name;
- cout << "Eta' persona: ";
- cin >> next_person->age;
- next_person->next = NULL;
- }
- else
- // Se non viene alloccata la memoria con successo
- {
- cout << "Errore: Impossibile occupare la memoria." << endl;
- }
- return person_list;
- }
- }
- void show_persons(person *person_list)
- // Stampa tutti gli elementi nella lista
- {
- person *next_person;
- next_person = person_list;
- if(next_person == NULL)
- // Se la lista è vuota
- {
- cout << "La lista e' vuota." << endl;
- return;
- }
- else
- // Se ci sono elementi nella lista
- {
- cout << "-------------------------" << endl;
- while(next_person != NULL)
- {
- cout
- << next_person->name << endl
- << next_person->age << endl
- << "-------------------------" << endl;
- next_person = next_person->next;
- }
- }
- }
- void sort_list(person **person_list)
- {
- person *current_person = *person_list;
- person *next;
- while (current_person->next != NULL)
- // Fino a che la lista ha un elemento successivo
- {
- person *next = current_person->next;
- // Scorre la lista
- while (next != NULL)
- // Dall'elemento fino alla fine
- {
- if (current_person->age > next->age)
- // Se l'eta è maggiore dell'età del successivo
- {
- // Scambio il contenuto delle liste
- std::swap(next->name, current_person->name);
- std::swap(next->age, current_person->age);
- }
- next = next->next;
- }
- current_person = current_person->next;
- }
- cout << "OPERAZIONE COMPLETATA: Lista ordinata" << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement