栈的基本操作以及整数数制转换的测试

#include <stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10

typedef int StackElemType;

typedef struct
{
  StackElemType *base;
  StackElemType *top;
  int stacksize;
}SqStack;

void InitStack(SqStack *S)
{
  S->base=(StackElemType *)malloc( Stack_Init_Size *sizeof(StackElemType));
  if(!S->base)exit(0);
  S->top=S->base;
  S->stacksize=Stack_Init_Size;
}


void Push(SqStack *S,StackElemType e)
{
  if(S->top-S->base>=S->stacksize)
 {
    S->base=(StackElemType *)realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(StackElemType));
    if(!S->base)exit(0);
    S->top=S->base+S->stacksize;
    S->stacksize+=STACKINCREMENT;
  }
  *S->top++=e;
}

int Pop(SqStack *S,StackElemType e)
{
  if(S->top==S->base)return 0;
  e=*--S->top;
  return e;
}

int GetTop(SqStack *S,StackElemType e)
{
  if(S->top==S->base) return 0;
 
  e=*(S->top-1);
  return e;
}

int StackEmpty(SqStack *S)
{
  if(S->top==S->base)
  return 1;
  else
  return 0;
}

void conversion(SqStack *S,int n,int r)
{
 printf("十进制正整数%d转换为%d进制为:/n",n,r);
 while(n)
 {
  Push(S,n%r);
  n=n/r;
 }
 while(!StackEmpty(S))
 {
  StackElemType  e=Pop(S,e);
  switch(e)
  {
  case 10: printf("A");
   break;
  case 11: printf("B");
   break;
  case 12: printf("C");
   break;
  case 13: printf("D");
   break;
  case 14: printf("E");
   break;
  case 15: printf("F");
   break;
  default: printf("%d",e);
  }
 }
 printf("/n");

}

void main()
{
  int n,r;
  SqStack S;
  InitStack(&S);
  printf("Input the Positive Integer:/n");
  scanf("%d",&n);
  printf("Input the coversion type:/n");
  scanf("%d",&r);
  conversion(&S,n,r);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值