| Alexandru58 a întrebat:

E cineva pe aici care se pricepe la programare? Am nevoie sa stiu cum sa inversez o lista simplu inlantuita circulara, din 1 2 3 4 sa devina 4 3 2 1.

1 răspuns:
| Steregoi a răspuns:

Iei la rand fiecare element si il compari cu restul si alegi maximul si la sfarsitul parcurgerii listei ai maximul la inceput sau in capul listei. Apoi parcurgi pe rand restul elementelor listei si plasezi al doilea maxim din elementele parcurse si asa mai departe pana ordonezi descrescator elementele din lista. In cazul tau avand 4 ( N ) elemente parcurgi lista de N-1 ori. Se face cu instructiune repetitiva for in for. Primul for stabileste numarul de parcurgeri. Al doilea for e folosit la comparari si gasirea maximului. De fiecare data cand gasesti un maxim inversezi pozitiile elementelor din lista adica ceva de genul a=lista[i]; lista[i]=lista[i+1]; lista[i+1]=a. Consideram primul element capul listei ( varful stivei) iar ultimul element coada listei ( baza stivei ). Lista circulara e doar in mintea ta adica capul listei e imediat dupa sau inaintea cozii listei depinzand de cum vrei sa consideri elementele extreme ale listei.