Răspuns :
Explicatie :
Ai explicatia in poza atasata.
Nota :
E recomandata implementarea unei cozi circulare sau gestionarea dinamica a memoriei pentru a miscora cantitatea de memorie ocupata de program in timpul executiei.
Am impartit programul in multiple functii pentru a oferi posibilitatea de adaugare rapida a acestor functionalitati - in cazul in care acestea sunt necesare.
Program C++ :
#include <iostream>
using namespace std;
unsigned v[1300000];
int li=0,ls=0;
void adauga(unsigned x){
//Suprogram care adauga valoarea lui x la finalul cozii
v[ls++]=x;
}
unsigned sterge(){
//Suprogram care sterge prima valoare din coada(si o returneaza)
//Verifica daca exista elemente pentru stergere
if(li<ls) li++;
return v[li-1];
}
unsigned numara(){
//Suprogram care numara numarul de valori aflate inca in stiva
return ls-li;
}
int main(){
unsigned n,m,aux;
//Citire n,m
cin >> n >> m;
//Citire valori initiale
for(unsigned i=1;i<=n;i++){
cin >> aux;
adauga(aux);
}
//Citire si procesare comenzi
for(unsigned i=1;i<=m;i++){
//Citeste tipul comenzii (1-stergere, 2-adaugare)
cin >> aux;
//Daca e comanda de stergere, sterge prima valoare din coada
if(aux==1)sterge();
//Altfel citeste si insereaza noua valoare
else{
cin >> aux;
adauga(aux);
}
}
//Afiseaza numarul de valori aflate in sir dupa terminarea programului
cout << numara() << endl;
while(numara()){
cout << sterge() << " ";
}
}