1.进制转换函数的实现。 void conversion(int N) {//十进制转换成八进制数 Stack S; InitStack(S); //初始化空栈S while(N) {//当N非零时,循环 Push(S,N%8); //把N与8求余得到的八进制数压入栈S N=N/8; //N更新为N与8的商 } while(!StackEmpty(S))//当栈S非空时,循环 { Pop(S,e); //弹出栈顶元素e printf( “%d”, e ); //输出e } } void main( void ) { conversion( 200 ); } 添加栈操作函数,使上面的程序能够运行。
时间: 2024-03-22 16:37:01 浏览: 51
可以参考以下代码实现栈操作函数:
```c++
#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100 //栈的初始空间
#define STACKINCREMENT 10 //栈的增量空间
typedef struct {
int *base; //栈底指针
int *top; //栈顶指针
int stacksize; //当前已分配的存储空间
} Stack;
int InitStack(Stack &S) {
S.base = (int *)malloc(STACK_INIT_SIZE * sizeof(int));
if (!S.base) {
return 0;
}
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return 1;
}
int StackEmpty(Stack S) {
return S.base == S.top;
}
int Push(Stack &S, int e) {
if (S.top - S.base >= S.stacksize) { //栈满,追加存储空间
S.base = (int *)realloc(S.base, (S.stacksize + STACKINCREMENT) * sizeof(int));
if (!S.base) {
return 0;
}
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*(S.top++) = e;
return 1;
}
int Pop(Stack &S, int &e) {
if (S.top == S.base) {
return 0;
}
e = *(--S.top);
return 1;
}
int GetTop(Stack S, int &e) {
if (S.top == S.base) {
return 0;
}
e = *(S.top - 1);
return 1;
}
```
使用上述栈操作函数,可以调用 conversion 函数实现十进制转八进制的功能。
阅读全文