【数据结构】 利用栈实现进制转换

来源:互联网 发布:北京匡恩网络ceo 编辑:程序博客网 时间:2024/05/16 05:58

利用栈 转换进制 碰到 大于 10的进制 需要在进栈元素处做相应的处理


/***// 数制 转换问题 所得商 入栈 计算完毕后 出栈 即为所得InitStack ( &S)  :  栈的初始化Push ( &S, e) :进栈Pop (&S ) : 出栈GetTop (S ): 取栈顶元素IsEmpty (S): 判栈空否***/#include <stdio.h>#include <stdlib.h>#define STACK_MAX 1000typedef int ElemType;typedef struct Stack{int top;ElemType elem[STACK_MAX];}Stack,*Pstack;void InitStack (Pstack S) ;               // 栈的初始化void Push (Pstack S, ElemType elem) ;     // 进栈ElemType Pop (Pstack S ) ;                // 出栈ElemType GetTop (Pstack S );              // 取栈顶元素bool IsEmpty (Pstack S);                  // 判栈空否void main(){int num = 0;int binary = 0;Stack stack;Pstack pstack = &stack;InitStack(pstack);printf("输入十进制数字:");scanf("%d",&num);printf("输入转换成的进制:");scanf("%d",&binary);while (num != 0){Push(pstack,num%binary);num = num/binary;}while (!IsEmpty(pstack)){printf("%d",Pop(pstack));}printf("\n");}void InitStack (Pstack S)   // 栈的初始化{S->top = 0;for (int i = 0; i < STACK_MAX; i++)S->elem[i] = 0;}void Push (Pstack S, ElemType elem) // 进栈{if (S->top != STACK_MAX)    // 判断是否栈满S->elem[(S->top)++] = elem;}ElemType Pop (Pstack S ) // 栈顶元素出栈{return S->elem[-- (S->top)];}ElemType GetTop (Pstack S ) // 取栈顶元素{if (!IsEmpty(S))return S->elem[S->top-1];elseprintf("栈空~~\n");}bool IsEmpty (Pstack S) // 判栈空否{return (S->top == 0);}


0 0
原创粉丝点击