Ne dorim:
În acest tutorial vom folosi clasa std::list din STL. Pentru mai multe detalii, vă sugerăm să citiți documentația oficială (list).
Atenție! Este nevoie să includem biblioteca list.
#include <list> // std::list
Clasa std::list oferă toate funcționalitățile uzuale pentru o listă. Menționăm că nu există o implementare unică, astfel încât apar mici diferențe față de implementările sugerate în articol:
În continuare vom prezenta un exemplu inserare de elemente într-o listă.
int main() { std::list <int> l; std::list <int>::iterator it; int i; for(i = 0; i < 5; ++i) { l.push_back(i); } for(i = 5; i < 10; ++i) { l.push_front(i); } for(it = l.begin(); it != l.end(); ++it) { std::cout << *it << " "; } std::cout << "\n"; return 0; }
Având la dispoziție o listă cu elemente, putem sa extragem element cu element și să le prelucrăm (afișare), iar apoi să le eliminăm.
l.pop_front(); l.pop_front(); for(it = l.begin(); it != l.end(); ++it) { std::cout << *it << " "; } std::cout << "\n";
g++ main.cpp -o main
Exemplu:
./main 9 8 7 6 5 0 1 2 3 4 7 6 5 0 1 2 3 4
La fiecare element ce trebuie adăugat în lista sortată se va itera de la începutul listei și se va găsi poziția în care trebuie adăugat.
std::cin >> n; for(i = 0; i < n; ++i) { std::cin >> x; if(l.empty()) { l.push_back(x); } else { for(it = l.begin(); it != l.end(); ++it) { if(*it > x) break; } if(it == l.begin()) { l.push_front(x); } else if(it == l.end()) { l.push_back(x); } else { l.insert(it, 1, x); } } for(it = l.begin(); it != l.end(); ++it) { std::cout << *it << " "; } std::cout << "\n"; }
g++ main.cpp -o main
./main 10 5 5 1 1 5 17 1 5 17 2 1 2 5 17 10 1 2 5 10 17 -2 -2 1 2 5 10 17 21 -2 1 2 5 10 17 21 3 -2 1 2 3 5 10 17 21 1 -2 1 1 2 3 5 10 17 21 4 -2 1 1 2 3 4 5 10 17 21