视数据结构写代码(10)栈的应用(一) 数值转换
看数据结构写代码(10)栈的应用(一) 数值转换
下面给出10 进制转换其他进制的 例子。这个例子 上在 上篇 链栈的 基础上编写的。
首先 修正上一节 stackPop 代码的错误,
E_State stackPop(linkStack * stack,elelmentType * data){ if (stack->top != stack->bottom) { //首先指向第一个元素. lStackNode * next = stack->bottom; *data = stack->top->data; //找到栈顶元素的前驱 while (next->next != stack->top) { next = next->next; } free(stack->top); next->next = NULL; stack->top = next; //忘记加了 stack->len--; return E_State_Ok; } else{ return E_State_Error; } }
下面给出10 进制转换其他进制的 例子。这个例子 上在 上篇 链栈的 基础上编写的。
//进制转换 int _tmain(int argc, _TCHAR* argv[]) { linkStack stack; stackInit(&stack); //需要转换的数字 int number; //几进制 int base; printf("请输入一个10进制数: "); scanf("%d",&number); printf("请输入转换进制数: "); scanf("%d",&base); int oldNumber = number; while (number != 0) { stackPush(&stack,number%base); number = number / base; } int pop; printf("%d 转换为 %d进制数 为:",oldNumber,base); while (stackPop(&stack,&pop) != E_State_Error) { printf("%d",pop); } printf("\n"); stackDestory(&stack); return 0; }