Wykorzystując podany program musze napisać program przenoszący elementy stosu S1 na stos S2, nie zmieniając kolejności elementów stosu (korzystając jedynie z pojedynczych zmiennych). NIe mam pojecia jak to zrobic.Prosze o jakakolwiek pomoc . Z gory dzieki.
#include <stdio.h>
#include <conio.h>
#define rozmiar 10
static char stos[rozmiar];
static int ses = -1;
int isFull(void) { // sprawdzenie, czy stos jest pełny
if (ses == rozmiar-1) return 1;
else return 0;
}
int isEmpty(void) { // sprawdzenie, czy stos jest pusty
if (ses == -1) return 1;
else return 0;
}
void clear(void) { // wyczyszczenie stosu
ses = -1;
}
void push(char el) { // włożenie na stos elementu el typu typ
ses++;
stos[ses] = el;
}
void pop(void) { // zdjęcie ze stosu ostatniego elementu
ses--;
}
char top(void) { // odczytanie (bez zdejmowania) ostatniego elementu
return stos[ses];
}
int main(void){
char elm, plc;
printf("Wprowadz znak polecenia (c, p, o, t, e, f, w)\n");
plc=getche();
while (plc!='/')
{
switch(plc){
case 'c': // clear
clear();
printf("\nWprowadz znak polecenia (c, p, o, t, e, f, w)\n");
plc=getche();
break;
case 'p': // push
if(isFull()) printf("\nStos jest pelny!\n");
else {
printf("\nWprowadz element stosu\n");
elm=getche();
push(elm);
}
printf("\nWprowadz znak polecenia (c, p, o, t, e, f, w)\n");
plc=getche();
break;
case 'o': // pop
pop();
printf("\nWprowadz znak polecenia (c, p, o, t, e, f, w)\n");
plc=getche();
break;
case 't':
top(); // top
if (ses!=-1)printf("\nSzczytowy element stosu: %c",top());
printf("\nWprowadz znak polecenia (c, p, o, t, e, f, w)\n");
plc=getche();
break;
case 'e': // sprawdzenie czy stos jest pusty
if(isEmpty()) printf("\nStos jest pusty!");
else printf("\nStos nie jest pusty!");
printf("\nWprowadz znak polecenia (c, p, o, t, e, f, w)\n");
plc=getche();
break;
case 'f': // sprawdzenie czy stos jest pelny
if(isFull()) printf("\nStos jest pelny!");
else printf("\nStos nie jest pelny!");
printf("\nWprowadz znak polecenia (c, p, o, t, e, f, w)\n");
plc=getche();
break;
case 'w': // odczytanie wartosc ze stosu
if(!isEmpty()){
printf("\nZawartosc stosu (szczyt stosu u gory)\n");
int i;
for (i=ses; i>=0; i--) printf("%c \n",stos[i]);
}
else printf("\nStos jest pusty\n");
printf("Wprowadz znak polecenia (c, p, o, t, e, f, w)\n");
plc=getche();
break;
default: // nic
printf("\nWprowadz wlasciwe polecenie (c, p, o, t, e, f, w)\n");
plc=getche();
break;
}
}
getche();
return 0;
}