#include<stdio.h>
int tp=-1;
void push(int arr[],int value)
{
arr[++tp]=value;
}
void pop(int arr[])
{
if(size()==0)
{
puts("-1");
return;
}
printf("%d\n",arr[tp--]);
}
int size()
{
return tp+1;
}
void empty()
{
if(size()==0)puts("1");
else puts("0");
}
int top(int arr[])
{
if(size()==0)
{
puts("-1");
return;
}
printf("%d\n",arr[tp]);
}
int main()
{
int arr[10000];
unsigned int i,repeat;
char command[6];
scanf("%d",&repeat); //repeating
for(i=0;i<repeat;i++)
{
scanf("%s",command);
switch(command[0])
{
case 'p':
if(command[1]=='u') //push
{
int value;
scanf("%d",&value);
push(arr,value);
}
else pop(arr); //pop. if stack is empty, output -1
break;
case 's':
printf("%d\n",size()); //print size of stack
break;
case 'e':
empty(); //if stack is empty, print 1. if not, print 0.
break;
case 't':
top(arr); //print value that is on top of stack. if stack is empty, print -1
break;
}
}
}Comment puis-je faire en sorte que ce code de pile utilise moins de mémoire? (C lang)
Je veux faire ce code utiliser moins de mémoire ... ce code utilise 1116KB, mais un code avec la même algorithme utilise 1000Ko. Comment puis-je faire en sorte que ce code utilise moins de mémoire?
ce code fonctionne comme ceci -
ce code a 5 commandes:
1.Push X: ajoute X dans la pile
2.pop: Supprime un élément de la pile et impression il.
3.Size: imprimer le nombre d'éléments de la pile
4.Videz: si cette pile est vide, sinon impression 1. Imprimer 0
5.top: imprimer l'élément qui est sur le dessus de la pile
étapes
- valeur d'entrée
(quantité de boucle de répétition)
commande d'entrée
profit !!