C语言栈实现任意进制转换
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
#include <stdio.h> #define MAX_STACK_SIZE 100 int stack[MAX_STACK_SIZE]; int top = -1; int is_empty(int *top) { if (*top < 0) return 1; return 0; } int is_full(int *top) { if (*top >= MAX_STACK_SIZE - 1) return 1; return 0; } void add(int *top, int item) { if (is_full(top)) { fprintf(stderr, "stack full\n"); return; } stack[++*top] = item; // 先移动指针再放入数值,指针指向的位置非空 } int delete(int *top) { if (is_empty(top)) { fprintf(stderr, "stack empty\n"); return -1; } return stack[(*top)--]; // 先取出数值再移动指针,指针指向的位置非空 } int main(void) { int num, jin; printf("输入一个数字:"); scanf("%d", &num); printf("希望转换为多少进制:"); scanf("%d", &jin); while(num) { add(&top, num % jin); // 将余数压栈 num /= jin; } while(!is_empty(&top)) { printf("%d", delete(&top)); } putchar(‘\n‘); return 0; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。