Sunteți pe pagina 1din 2

LECȚIA_16

A. Inserarea unui element pe poziția k


B. Ștergerea unui element de pe poziția k
C. Stergerea mai multor elemente

A. Inserarea unui element pe poziția k


- vectorul își mărește numărul de elemente e nevoie la declararea mărimii să avem suficiente poziții
- poate fi inserat pe ultima poziție, pe prima sau pe o poziție intermediară
A.1.- inserăm la sfârșitul vectorului
 se mărește mărimea vectorului cu 1
 se memorează valoarea

n++; SAU v[++n]=x;


v[n]=x;
A.2- inserăm la începutul vectorului

 mutăm la dreapta toate valorile din vector  apare un element în plus


 mutarea începe de la sfârșit
 memorez pe poziția 1 valoarea de inserat
for (i=n; i>=1; i--)
v[i+1]=v[i];
v[1]=x;
n++;
A.3 – inserăm pe o poziție intermediară

 deplasăm elementele la dreapta poziției de inserat (k)


 inserăm valoarea de adăugat pe pozitia k
for (i=n; i>=k; i--)
v[i+1]=v[i];
v[k]=x;
n++;
B. Ștergerea unui element
B.1.- ștergem elementul de la sfârșitul vectorului

 se micșorează mărimea vectorului cu 1


n--;
B.2- ștergem elementul de la începutul vectorului

 mutăm la stânga toate valorile din vector


 mutarea începe de la prima poziție
 micșorez mărimea vectorului
for (i=1; i;=n-1; i++)
v[i]=v[i+1];
n--;
B.3 – ștergem elementul de pe o poziție intermediară (k)

 deplasăm elementele de la dreapta poziției de inserat (k+1), la stânga(k)


 micșorez mărimea vectorului
for (i=k; i<=n-1; i++)
v[i]=v[i+1];
n--;
C. Stergerea mai multor elemente
Să se elimine din șir toate elementele pare.
Rezolvare:
 parcurgem șirul și analizăm elementul curent X[p];
 dacă elementul X[p] este par, aplicăm algoritmul de mai sus pentru ștergerea elementului cu indicele p.
for (int p = 0 ; p < n ; p ++)
if(X[p] % 2 == 0) {
for(int i = p ; i < n - 1; i ++)
X[i] = X[i+1];
n --;
}

NU funcționează corect dacă în șir sunt elemente alăturate cu proprietatea dorită (pare), deoarece al doilea element
par nu va fi analizat, deci nu va fi eliminat din șir. O soluție este să parcurgem elementele în ordine inversă:
for (int p = n - 1 ; p >= 0 ; p --)
if(X[p] % 2 == 0) {
for(int i = p ; i < n - 1; i ++)
X[i] = X[i+1];
n --;
}
#1452 #163 #1453 #2734 #158 #159 (pbinfo)

S-ar putea să vă placă și