online: 5; azi: 86; total: 50541 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 citeşte dintr-un fişier text un număr cu maxim 20 de cifre. Se creează o listă cu cifrele numărului, se elimină din listă cifrele pare şi se afişează numărul astfel obținut.
# 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 ( Node *& head , int val) {
Node * new_node = create_node (val);
new_node -> next = head ;
head = new_node ;
}
void remove_even ( Node *& head ) {
while ( head && head ->val % 2 == 0 ) {
Node * to_delete = head ;
head = head -> next ;
delete to_delete ;
}
Node * current = head ;
while ( current && current -> next ) {
if ( current -> next ->val % 2 == 0 ) {
Node * to_delete = current -> next ;
current -> next = current -> next -> next ;
delete to_delete ;
} else {
current = current -> next ;
}
}
}
void print_list ( Node * head ) {
while ( head ) {
std :: cout << head ->val;
head = head -> next ;
}
std :: cout << std :: endl ;
}
void delete_list ( Node *& head ) {
while ( head ) {
Node * temp = head ;
head = head -> next ;
delete temp ;
}
}
int main () {
std :: ifstream input_file ( "numar.txt" ) ;
char ch ;
Node * head = nullptr ;
while ( input_file >> ch ) {
int digit = ch - '0' ;
insert ( head , digit);
}
remove_even ( head );
print_list ( head );
delete_list ( head );
return 0 ;
}

Date de intrare:
12345678901234567890
Date de iesire :
13579013579