online: 4; azi: 1397; total: 51852 Manual clasa a xi a - Implementarea structurilor de date - Lista liniara

Probleme Rezolvate



Manual clasa a Xi a

Implementarea structurilor de date

Lista liniara

Se creează o listă ordonată cu numerele din fişier şi se divizează apoi lista în două liste: una cu numere pare şi una cu numere impare.
# include < iostream >
# include < fstream >
struct Node {
int val;
Node * next ;
};
Node * create_node ( int val) {
Node * new_node = new Node ;
new_node ->val = val;
new_node -> next = nullptr ;
return new_node ;
}
void insert_ordered ( Node *& head , int val) {
Node * new_node = create_node (val);
if (! head || head ->val >= val) {
new_node -> next = head ;
head = new_node ;
} else {
Node * current = head ;
while ( current -> next && current -> next ->val < val) {
current = current -> next ;
}
new_node -> next = current -> next ;
current -> next = new_node ;
}
}
void split_list ( Node * head , Node *& even_head , Node *& odd_head ) {
while ( head ) {
if ( head ->val % 2 == 0 ) {
insert_ordered ( even_head , head ->val);
} else {
insert_ordered ( odd_head , head ->val);
}
head = head -> next ;
}
}
void print_list ( Node * head ) {
while ( head ) {
std :: cout << head ->val << ' ' ;
head = head -> next ;
}
std :: cout << '\n' ;
}
void delete_list ( Node *& head ) {
while ( head ) {
Node * temp = head ;
head = head -> next ;
delete temp ;
}
}
int main () {
std :: ifstream input_file ( "numere.txt" ) ;
int num;
Node * head = nullptr ;
Node * even_head = nullptr ;
Node * odd_head = nullptr ;
while ( input_file >> num) {
insert_ordered ( head , num);
}
split_list ( head , even_head , odd_head );
print_list ( even_head );
print_list ( odd_head );
delete_list ( head );
delete_list ( even_head );
delete_list ( odd_head );
return 0 ;
}

D atele de intrare ar trebui să fie un fișier text numit numere.txt care conține numere întregi separate prin spațiu, pe același rând. De exemplu, fișierul numere.txt ar putea arăta astfel:
5 12 6 3 9 20 7 8 14 11
Această secvență de numere întregi va fi procesată de program, care va crea o listă ordonată cu aceste numere și apoi o va împărți în două liste: una cu numere pare și una cu numere impare.
În cazul exemplului de mai sus, rezultatul va fi următorul:
Lista cu numere pare: 6 8 12 14 20
Lista cu numere impare: 3 5 7 9 11
Puteți crea fișierul numere.txt folosind un editor de text precum Notepad sau Notepad ++ și salvând fișierul în aceeași locație cu programul C++ (sau specificând calea completă a fișierului în program). Dacă doriți să testați programul pe mai multe seturi de date, puteți modifica conținutul fișierului numere.txt și să rulați programul din nou.