站点图标 陌路寒暄

栈的基本运算(栈和队列)

栈的基本运算(栈和队列)

时间: 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;  
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

退出移动版