Răspuns :
Explicație:
#include <iostream>
#define max 20000000000
#define min -20000000000
using namespace std;
struct NOD
{
int info;
NOD* next;
};
typedef NOD* STIVA;
void push(STIVA &vf, int ninfo)
{
STIVA nou = new (nothrow) NOD;
if (nou == NULL)
{
cout << "spatiul nu este suficient" << endl;
exit(1);
}
nou->info = ninfo;
nou->next = vf;
vf = nou;
}
void pop(STIVA &vf)
{
STIVA p;
if (vf == NULL)
cout << "stiva este vida" << endl;
p = vf;
vf = vf->next;
delete p;
}
STIVA creare_stiva()
{
STIVA vf = NULL;
int N;
do
{
cout << "numarul de elemente este ";
cin >> N;
} while (N < 0 || N>10000);
int *sir = new (nothrow) int[N];
if (sir == NULL)
{
cout << "eroare la alocare" << endl;
exit(1);
}
for (int i = 0; i < N; i++)
{
cout << "componenta " << i + 1 << " este ";
cin >> *(sir + i);
push(vf, *(sir + i));
}
int M;
do
{
cout << "numarul de valori este ";
cin >> M;
} while (M < 0 || M>10000);
int k, X;
for (int i = 0; i < M; i++)
{
cout << "k[" << i + 1 << "] este ";
cin >> k;
if (k == 1)
{
do
{
cout << "X este ";
cin >> X;
} while (X<min || X>max);
push(vf, X);
}
else
if (k == 2 && vf != NULL)
pop(vf);
}
return vf;
}
int main()
{
STIVA vf1 = creare_stiva();
int T = 0;
int info;
STIVA vf2 = NULL;
while (vf1 != NULL)
{
info = vf1->info;
push(vf2, info);
T++;
vf1 = vf1->next;
}
cout << "stiva are " << T << " componente";
cout << endl;
while (vf2 != NULL)
{
cout << vf2->info << " ";
vf2 = vf2->next;
}
system("pause");
return 0;
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.