#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #include<stdio.h> #include<stdlib.h> typedef int SElemType; typedef struct{ SElemType *base,*top; int stacksize; }SqStack; int InitStack(SqStack &S) { S.base = (SElemType*)malloc(sizeof(SElemType) * STACK_INIT_SIZE); if(!S.base) exit(-2); S.base = S.top; S.stacksize = STACK_INIT_SIZE; return 1; }// int GetTop(SqStack S,SElemType &e) { if(S.base == S.top) return -1; e = *(S.top-1); return 1; } int Push(SqStack &S,SElemType e) { if(S.top - S.base >= S.stacksize) { S.base = (SElemType*)realloc(S.base,sizeof(SElemType) * (STACKINCREMENT + S.stacksize)); if(!S.base) exit(-2); S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } *S.top++ = e; return 1; } int Pop(SqStack &S,SElemType &e) { if(S.top <= S.base) return -1; e = *(--S.top); return 1; } void conversion(int e,int i) { SqStack s; InitStack(s); printf("十进制%d的%d进制数为:",e,i); while(e) { Push(s,e % i); e = e / i; } while(s.top != s.base) { int temp; Pop(s,temp); printf("%d",temp); } printf("\n"); } int main() { SqStack s1; InitStack(s1); Push(s1,4); Push(s1,10);int i; GetTop(s1,i); printf("%d",i); printf("-------------------\n"); conversion(1348,8); return 1; }
时间: 2024-10-13 15:42:57