6-2 进制转换(PTA栈)(C语言解法)

题目描述

设计一个顺序栈,并利用该顺序栈将给定的十进制整整数转换为二进制输出。

函数接口定义:
Status SPush( SqStack &s,ElemType x)
{
    if(s.top==s.stacksize)  //栈满
        return ERROR;
    ________________________;//1条或2条语句均可
        return OK;
}
Status SPop( SqStack &s,int &e )
{
    if(s.top==0) //栈空
        return ERROR;
    s.top--;  //S.top下移
    _________=s.data[s.top]; //把栈顶元素赋给参数e
    return OK;
}
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>

#define MaxSize 10
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType;

typedef struct{
    ElemType *data;    //存储元素的数组
    int top;           //栈顶指针
    int stacksize;       //栈最大容量
}SqStack;

void CreateStack(SqStack &s)
{
    s.data= (ElemType *)malloc(MaxSize*sizeof(ElemType));
        s.top=0;
    s.stacksize=MaxSize;
}

Status SPush( SqStack &s, ElemType x );  
Status SPop( SqStack &s,int &e );

int main()
{
    SqStack s;
    int N,e;
    CreateStack(s);
    scanf("%d", &N);
    while (N) {
        if(SPush(s,N%2))
           N=N/2;
        else{ 
            printf("stack is overflow!\n");
           return 0;
      }
    }
while(SPop(s,e))
   printf("%d",e);
printf("\n");
return 0;
}
/* 请在这里填写答案 */
输入样例:
1023
输出样例:
1111111111

解题思路

基本就按照题目函数接口给的提示写就行了

C语言解法

Status SPush( SqStack &s,ElemType x)
{
    if(s.top==s.stacksize)  //栈满
        return ERROR;
    s.data[s.top++]=x; //注意这道题的栈顶指针初始化为0而不是-1 所以这里要后置递增
        return OK;
}
Status SPop( SqStack &s,int &e )
{
    if(s.top==0) //栈空
        return ERROR;
    s.top--;  //S.top下移
    e=s.data[s.top]; //把栈顶元素赋给参数e
    return OK;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值