1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| #include <stdio.h> #include <stdlib.h> #define MAXSIZE 200 typedef struct{ int *top; int *base; int SIZE; }Stack; Stack *initStack(){ Stack *s = (Stack*)malloc(sizeof(Stack)); s->SIZE = MAXSIZE; s->base = (int*)malloc(MAXSIZE*sizeof(int)); s->top = s->base; return s; }
int isEmpty(Stack *s){ if(s->base == s->top) return 1; return 0; }
int isFull(Stack *s){ if(s->top - s->base == s->SIZE) return 1; return 0; }
int push(Stack *s,int data){ if(!isFull(s)){ *(s->top) = data; s->top++; return 1; } return 0; }
int pop(Stack *s,int *data){ if(!isEmpty(s)){ *data = *(s->top-1); s->top--; return 1; } return 0; }
int main(){ printf("请输入一位数:"); int num; scanf("%d",&num); printf("请输入转换的进制:"); int n; scanf("%d",&n); int next = num; Stack *s = initStack(); while(next != 0){ push(s,next % n ); next = next / n; } while(!isEmpty(s)){ int data; pop(s,&data); printf("%d",data); } return 0; }
|