Здравейте! Имам следното условие "Да се състави програма, която създава динамичен стек S, след което установява N–я от дъното елемент в стойност A, като изключва от стека първите N-1 от дъното елемента." Проблема ми е, че в програмата, която аз съм написал елементите се запазват, а в условието се иска да се махне N-1 елемент от дъното. Също така не трябва да използвам STL библиотека. Ще ви бъда благодарен ако някой може да ми помогне!
Ето следната програма, която аз съм написал:
#include<iostream>
using namespace std;
int br = 0;
struct elem
{
int key;
elem *next;
}*s1 = NULL, *p, *s2 = NULL;
void push(int n, elem *&start);
int pop(int& n, elem *&start);
void insert();
void insert()
{
int n = 1;
while (n != 0) // 0 za izhod
{
cout << "\n Vuvedi cifra: ";
cin >> n;
if (n != 0) push(n, s2);
}
cout << endl;
}
void push(int n, elem*& start)
{
p = start;
start = new elem;
start->key = n;
start->next = p;
br++;
}
int pop(int& n, elem*& start)
{
if (start)
{
n = start->key;
p = start;
start = start->next;
delete p;
return 1;
}
else
{
return 0;
}
}
void main()
{
insert();
int N, a, i;
do
{
cout << "\n Vuvedi chislo mejdu 1 i " << br << "!" << endl;
cout << " N= ";
cin >> N;
} while (N<1 && N>br);
for (i = 1; i < N; i++)
{
pop(a, s2);
push(a, s1);
}
cout << "\n Vuvedi nova stoinost " << endl;
cout << " A= ";
cin >> a;
s1->key = a;
while (pop(a, s2))
push(a, s1);
while (pop(a, s1))
cout << " " << a << "\t";
}