online: 5; azi: 579; total: 51034 Manual clasa a xi a - Implementarea structurilor de date - Lista liniara

Probleme Rezolvate



Manual clasa a Xi a

Implementarea structurilor de date

Lista liniara

Să se insereze, după fiecare număr divizibil cu cea mai mare cifră a sa, valoarea cifrei, şi să se elimine numerele care au ultimele două cifre consecutive.
# include < iostream >
# include < fstream >
using namespace std ;
struct Node {
int data;
Node * next ;
};
int getMaxDigit ( int n) {
int maxDigit = 0 ;
while (n > 0 ) {
int digit = n % 10 ;
if (digit > maxDigit ) {
maxDigit = digit;
}
n /= 10 ;
}
return maxDigit ;
}
bool isDivisible ( int n, int divisor ) {
return n % divisor == 0 ;
}
void insertAfterDivisible ( Node * head , int digit) {
Node * current = head ;
while ( current != nullptr ) {
if ( isDivisible ( current ->data, getMaxDigit ( current ->data))) {
Node * newNode = new Node ;
newNode ->data = digit;
newNode -> next = current -> next ;
current -> next = newNode ;
current = newNode -> next ;
} else {
current = current -> next ;
}
}
}
void removeLastTwoDigits ( Node * head ) {
Node * current = head ;
while ( current != nullptr && current -> next != nullptr ) {
if (( current -> next ->data % 100 ) == (( current ->data % 100 ) + 1 )) {
Node * temp = current -> next ;
current -> next = temp -> next ;
delete temp ;
} else {
current = current -> next ;
}
}
}
void printList ( Node * head ) {
Node * current = head ;
while ( current != nullptr ) {
cout << current ->data << " " ;
current = current -> next ;
}
cout << endl ;
}
int main () {
ifstream inFile ;
inFile. open ( "input.txt" );
Node * head = nullptr ;
Node * tail = nullptr ;
int num;
while ( inFile >> num) {
Node * newNode = new Node ;
newNode ->data = num;
newNode -> next = nullptr ;
if ( head == nullptr ) {
head = newNode ;
tail = newNode ;
} else {
tail -> next = newNode ;
tail = newNode ;
}
}
insertAfterDivisible ( head , getMaxDigit ( head ->data));
removeLastTwoDigits ( head );
printList ( head );
return 0 ;
}

Pentru a testa corectitudinea programului, putem folosi următoarele date de intrare: