online: 11; azi: 1417; total: 51872 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ă două liste cu numerele citite din fişiere . În primul fişier numerele sunt ordonate crescător, iar în al doilea fişier numerele sunt ordonate descrescător. Se creează a treia listă prin interclasarea primelor două.
# include < iostream >
# include < fstream >
# include < string >
using namespace std ;
struct Node {
int value ;
Node * next ;
};
Node * createList ( string filename ) {
ifstream file ( filename.c_str ()) ;
Node * head = NULL ;
int value ;
while (file >> value ) {
Node * newNode = new Node { value , head };
head = newNode ;
}
file. close ();
return head ;
}
void printList ( Node * head ) {
while ( head != NULL ) {
cout << head -> value << " " ;
head = head -> next ;
}
cout << endl ;
}
Node * mergeLists ( Node * head1, Node * head2) {
Node * head = NULL ;
Node ** tail = & head ;
while (head1 != NULL && head2 != NULL ) {
if (head1-> value <= head2-> value ) {
* tail = head1;
head1 = head1-> next ;
} else {
* tail = head2;
head2 = head2-> next ;
}
tail = &(* tail )-> next ;
}
if (head1 != NULL ) {
* tail = head1;
} else {
* tail = head2;
}
return head ;
}
int main () {
Node * head1 = createList ( "file1.txt" );
cout << " List 1: " ;
printList (head1);
Node * head2 = createList ( "file2.txt" );
cout << " List 2: " ;
printList (head2);
Node * head = mergeLists (head1, head2);
cout << " Merged list : " ;
printList ( head );
// eliberam memoria alocata dinamic pentru noduri
while ( head != NULL ) {
Node * temp = head ;
head = head -> next ;
delete temp ;
}
return 0 ;
}