栈的基本运算(栈和队列)
时间: 1ms 内存:1000M
描述:
利用栈的基本运算,编写一个算法输入若干整数,以0标识输入结束。然后按与输入相反次序输出这些整数。
输入:
输入:
1 2 3 4 5 0
输出:
输出:
5 4 3 2 1
示例输入:
6 7 8 9 10 0
示例输出:
10 9 8 7 6
提示:
参考答案(内存最优[748]):
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define SEN 100
struct sqstack
{
char *base;
char *top;
int size;
};
struct sqstack *initEmptyStack() /*构建空輚*/
{
struct sqstack *p;
p=(struct sqstack *)malloc(sizeof(struct sqstack));
if(p!=NULL)
{
p->base=(char *)malloc(sizeof(struct sqstack)*SEN);
if(p->base!=NULL)
{
p->top=p->base;
p->size=SEN;
return p;
}
}
else
free(p);
return NULL;
}
int push(struct sqstack *p,char a) /*入栈*/
{
*p->top++=a;
return 0;
}
int pop(struct sqstack *p) /*出栈*/
{
return *(--p->top);
}
int main()
{
struct sqstack *p;
int m;
p=initEmptyStack();
while(scanf("%d",&m)&&m!=0)
push(p,m);
while(p->base!=p->top)
printf("%d ",pop(p));
printf("\n");
return 0;
}
参考答案(时间最优[0]):
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define SEN 100
struct sqstack
{
char *base;
char *top;
int size;
};
struct sqstack *initEmptyStack() /*构建空輚*/
{
struct sqstack *p;
p=(struct sqstack *)malloc(sizeof(struct sqstack));
if(p!=NULL)
{
p->base=(char *)malloc(sizeof(struct sqstack)*SEN);
if(p->base!=NULL)
{
p->top=p->base;
p->size=SEN;
return p;
}
}
else
free(p);
return NULL;
}
int push(struct sqstack *p,char a) /*入栈*/
{
*p->top++=a;
return 0;
}
int pop(struct sqstack *p) /*出栈*/
{
return *(--p->top);
}
int main()
{
struct sqstack *p;
int m;
p=initEmptyStack();
while(scanf("%d",&m)&&m!=0)
push(p,m);
while(p->base!=p->top)
printf("%d ",pop(p));
printf("\n");
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。