第3章 栈和队列——栈的应用:数制转换

来源:互联网 发布:英文期刊数据库 编辑:程序博客网 时间:2024/06/08 19:30
/* *    这个程序用栈的顺序存储实现进制不同的数字之间的转换。 */#include<stdio.h>#include<stdlib.h>#define STACK_INIT_SIZE  100#define STACKINCREMENT  10typedef struct sqstack{int *base;int *top;int stacksize;}sqstack;int push(sqstack *S,int n){if(S->top - S->base>=S->stacksize){      S->base = (int*)realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(int));if(!S->base){          /*实际并没有操作传进来的栈指针??????????*/printf("空间增加失败!\n");return 0;}S->stacksize = S->stacksize + STACKINCREMENT;}*(S->top) = n;S->top++;return 1;}int judgetop(sqstack *S){if(S->top==S->base){return 0;}return 1;}int pop(sqstack *S){int e;e = *(S->top-1);S->top--;return e;}int main(){int from,to,k;sqstack A;             A.base = (int )malloc(STACK_INIT_SIZE*sizeof(int));if(!A.base)return 0;A.top = A.base;A.stacksize = STACK_INIT_SIZE;scanf("%d%d",&from,&to);while(from>0){k = from%to;if(push(&A,k)==0)break;from = from/to;}while(judgetop(&A)!=0){printf("%d",pop(&A));}printf("\n");return 0;}/* *     测试案例: * *   输入: *        30 2 * *   输出: *        11110 */

原创粉丝点击