online: 10; azi: 260; total: 50715 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 cea în care sunt citite numerele din fişier . Să se inverseze ordinea de acces în listă, astfel încât parcurgerea să se facă de la ultimul număr către primul număr. (indicație. Se mută ultimul nod la începutul listei şi apoi, până se ajunge la numărul memorat la adresa care a fost a primului nod se inserează nodul ultim după ultimul nod inserat.)
# include < iostream >
# include < fstream >
# include < string >
using namespace std ;
struct Node {
int value ;
Node * next ;
};
Node * createList ( string filename ) {
ifstream file ( filename ) ;
Node * head = nullptr ;
int value ;
while (file >> value ) {
Node * newNode = new Node { value , head };
head = newNode ;
}
file. close ();
return head ;
}
void printList ( Node * head ) {
while ( head != nullptr ) {
cout << head -> value << " " ;
head = head -> next ;
}
cout << endl ;
}
Node * getLastNode ( Node * head ) {
while ( head -> next != nullptr ) {
head = head -> next ;
}
return head ;
}
void reverseList ( Node *& head ) {
if ( head == nullptr || head -> next == nullptr ) {
return ;
}
Node * lastNode = getLastNode ( head );
while ( head != lastNode ) {
Node * temp = head ;
head = head -> next ;
temp -> next = lastNode -> next ;
lastNode -> next = temp ;
}
}
int main () {
Node * head = createList ( "file.txt" );
cout << "Original list : " ;
printList ( head );
reverseList ( head );
cout << " Reversed list : " ;
printList ( head );
// eliberam memoria alocata dinamic pentru noduri
while ( head != nullptr ) {
Node * temp = head ;
head = head -> next ;
delete temp ;
}
return 0 ;
}

Exista posibilitatea sa apara o eroare!
Eroarea este legata de faptul că nullptr nu este recunoscut de compilator ca un cuvânt cheie în C++11. Pentru a remedia această problemă, puteți adăuga opțiunea - std =c++11 în setările de compilare ale proiectului.
Pentru a face acest lucru în Code:: Blocks , urmați acești pași:
Apoi ar trebui să încercați să compilați din nou programul.