Pagina informaticii

Teste de informatică pentru liceu, articole C#, C/C++, PHP

Liste simplu si dublu inlantuite

Test de evaluare
Liste liniare simplu şi dublu înlănţuite
Rândul 1

1. Scrieţi funcţia CreareLista care citeşte din fişierul numere.txt un şir de n numere naturale şi creează o listă care memorează în noduri cele n numere.

2. Scrieţi funcţia Afisare care afişează informaţiile din nodurile listei.

3. Scrieţi funcţia Elimina, care primind ca parametru un pointer la primul nod al listei şi un întreg x, caută primul nod care memorează valoarea x, îl elimină şi returnează valoarea 1. Dacă x nu apare în listă, funcţia va returna 0.

4. Scrieţi funcţia Adauga care primind ca parametru un pointer la primul nod din listă, inserează la începutul listei un nod ce memorează valoarea 99, iar la sfârşitul listei un nod ce memorează valoarea 999.

5. Scrieţi funcţia EliminaPare care elimină toate nodurile din listă ce memorează numere pare cuprinse între 12 şi 18, folosind apeluri ale funcţiei Elimina.

6. Scrieţi funcţia Numara care primind ca parametru un pointer la o listă, returnează numărul de noduri memorate înaintea celui de informaţie minimă. De exemplu, dacă lista este 10, 21, 3, 4, 6, 3, 5, se va returna valoarea 2, deoarece sunt două noduri înaintea nodului cu valoarea minimă 3. Mai există un nod ce memorează 3, dar primul este cel care contează.

Funcţia main a programului vostru va fi următoarea:

int main()
{
CreareLista(L) ;
Adauga(L) ;
cout<< “\n Lista initiala : ” ;
Afisare() ;
EliminaPare() ;
cout<< “\n Lista dupa eliminarea numerelor pare intre 12 si 18 : ” ;
Afisare() ;
cout<< “\n Numar de noduri inaintea celei cu informatie minima : ”<< Numara(L) ;
return 0 ;
}

Exemplu:
numere.txt
10
12  7  18  12  4  55  16  16  23  11

Se va fişa la ecran:

Lista initiala : 99 12  7  18  12  4  55  16  16  23  11 999
Lista dupa eliminarea numerelor pare intre 12 si 18: 99  7  4  55  23  11 999
Numar de noduri inaintea celei cu informatie minima : 2


Test de evaluare
Liste liniare simplu şi dublu înlănţuite
Rândul 2

1. Scrieţi funcţia CreareLista care citeşte din fişierul cifre.txt un şir de n cifre cuprinse între 0 şi 9 şi creează o listă care memorează în noduri cele n cifre. Cele n cifre formează un număr natural.

2. Scrieţi funcţia Afisare care afişează numărul memorat cifră cu cifră în listă.

3. Scrieţi funcţia Par, care primind ca parametru un pointer la primul nod al listei, returnează valoarea 1 dacă numărul memorat în listă este par sau returnează 0 dacă numărul este impar. Paritatea este dată de cifra din ultimul nod al listei.

4. Scrieţi funcţia Insereaza care primind ca parametru un pointer la primul nod din listă, adaugă după fiecare cifră 1 din llistă un nou nod care memorează 0.

5. Scrieţi funcţia Baza4 care returnează 1 dacă toate cifrele din listă sunt strict mai mici decât 4, sau returnează 0 dacă cel puţin o cifră este mai mare sau egală cu 4.

6. Scrieţi funcţia Elimina care primind ca parametru un pointer la primul nod din listă, şterge toate nodurile din listă care sunt mai mari sau egale decât 4.

Funcţia main a programului vostru va fi următoarea:

int main()
{
CreareLista(L) ;
cout<< “\n Numarul initial : ” ;
Afisare() ;
if (Par(L) == 1)
cout<< “\n Numarul este impar ” ;
else cout<<”\n Numarul este par” ;
Insereaza() ;
cout<<”\n Numarul dupa inserarea dupa fiecare 1 a unui 0 : ” ;
Afisare() ;
if (Baza4(L) == 1)
cout<< “\n Numarul este in baza 4 ” ;
else cout<<”\n Numarul nu este in baza 4” ;
Elimina(L) ;
cout<< “\n Numarul dupa eliminarea cifrelor mai mari de 4 : ” ;
Afisare() ;
return 0 ;
}

Exemplu:
numere.txt
10
1  2  3  1  1  4  5  9  2  1

Se va fişa la ecran:
Numarul initial : 1231145921
Numarul este impar
Numarul dupa inserarea dupa fiecare 1 a unui 0 : 10231010459210
Numarul nu este in baza 4
Numarul dupa eliminarea cifrelor mai mari de 4 : 10231010210

Despre autor
Author

Dan Pracsiu deţinător www.dponline.ro
Profesor, Liceul Teoretic "Emil Racoviță" Vaslui
Membru în Comisia Naţională a Olimpiadelor de Informatică
Pasiuni: istoria, călătoriile, fotografia, muzica clasică

Scrie un comentariu
Nume:

Comentariu:

15 + 10 =