0
#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;
}
}
我想使此代碼使用較少的內存... 這個代碼使用1116KB, 但相同的算法代碼使用1000KB。 我怎樣才能讓這段代碼使用更少的內存?
這個代碼是這樣工作的 -
此代碼具有5個命令:
1.push X:在堆疊中添加X
2.pop:從棧和打印移除項它。
3.size:打印
4.empty堆疊的元件的數量:堆棧是否爲空的,打印1.如果不是打印0
5.top:打印是項在堆棧的頂部
步驟
輸入值(repeat循環量)
輸入命令
利潤!