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 pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!