online: 5; azi: 458; total: 50913 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ă în care ordinea de acces este inversă celei în care sunt citite numerele. Se elimină din listă cel mai mic număr şi cel mai mare număr.
# include < iostream >
# include < fstream >
using namespace std ;
struct Node {
int data;
Node * next ;
};
void deleteMinMax ( Node * & head ) {
if ( head == NULL ) {
return ;
}
// cautarea valorii minime si maxime in lista
int minVal = head ->data;
int maxVal = head ->data;
Node * curr = head ;
while ( curr != NULL ) {
if ( curr ->data < minVal ) {
minVal = curr ->data;
}
if ( curr ->data > maxVal ) {
maxVal = curr ->data;
}
curr = curr -> next ;
}
// eliminarea nodurilor cu valorile minime si maxime
while ( head != NULL && head ->data == minVal ) {
Node * temp = head ;
head = head -> next ;
delete temp ;
}
curr = head ;
while ( curr != NULL && curr -> next != NULL ) {
if ( curr -> next ->data == minVal ) {
Node * temp = curr -> next ;
curr -> next = temp -> next ;
delete temp ;
}
else if ( curr -> next ->data == maxVal ) {
Node * temp = curr -> next ;
curr -> next = temp -> next ;
delete temp ;
}
else {
curr = curr -> next ;
}
}
}
void printList ( Node * head ) {
Node * curr = head ;
while ( curr != NULL ) {
cout << curr ->data << " " ;
curr = curr -> next ;
}
cout << endl ;
}
int main () {
Node * head = NULL ;
ifstream fin ( "input.txt" ) ;
int num;
while (fin >> num) {
Node * newNode = new Node ;
newNode ->data = num;
newNode -> next = head ;
head = newNode ;
}
fin. close ();
deleteMinMax ( head );
printList ( head );
return 0 ;
}