用栈实现二进制转十进制

来源:互联网 发布:中国高校财经数据库 编辑:程序博客网 时间:2024/05/22 07:07
  • 用栈实现二进制转十进制
#include<stdio.h>#include<stdlib.h>#include<time.h>#define OK 1#define ERROR 0#define MAXSIZE 20typedef int SElemType;typedef int Status;typedef struct {    SElemType data[MAXSIZE];    int top;    //用于栈顶指针}Sqstack;//顺序栈的初始化Status InitSqstack(Sqstack * S){    S->top=-1;    return OK;}//进栈操作Status Push(Sqstack * S,SElemType e){    if(S->top==MAXSIZE-1)   //栈满    {        return ERROR;    }    S->top++;   //栈顶指针增加1    S->data[S->top]=e;    return OK;}//出栈操作Status Pop(Sqstack * S,SElemType * e){    if(S->top==-1)  //栈底    {        return ERROR;    }    *e=S->data[S->top];    S->top--;    return OK;}//顺序栈的建立Status Create(Sqstack * S,int n){    SElemType Number;    for(int i=0;i<n;i++)    {        scanf("%d",&Number);        Push(S,Number);    }    return OK;}//二进制转十进制Status Change(Sqstack * S,int n){    SElemType Number,result;    SElemType Sum=0;    for(int i=0;i<n;i++)    {        Pop(S,&Number);        if(i==0)        {            result=Number*1;        }        else        {            for(int j=0;j<i;j++)            Number=Number*2;            result=Number;        }        Sum=result+Sum;    }    return Sum;}int main(){    Sqstack S;    int ElemNumber;    int NewElem;    InitSqstack(&S);    printf("请输入元素个数:\n");    scanf("%d",&ElemNumber);    printf("请输入二进制数:\n");    Create(&S,ElemNumber);    SElemType result=Change(&S,ElemNumber);    printf("转为十进制后的结果是:\n");    printf("%d\n",result);    return 0;}

运行结果

0 0
原创粉丝点击