【发布时间】:2017-12-23 05:15:27
【问题描述】:
#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 : 打印栈顶的元素
步骤
输入值(循环次数)
输入命令
利润!!
【问题讨论】: