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 ); } (1)添加栈操作函数,使上面的程序能够运行
时间: 2024-03-22 20:38:02 浏览: 70
可以添加以下栈操作函数:
```
#define MAXSIZE 100 // 假设栈空间最大为100
typedef int SElemType; // 定义栈中元素类型为int
typedef struct {
SElemType data[MAXSIZE];
int top; // 栈顶指针,指向栈顶元素的下标
} Stack;
// 初始化栈
void InitStack(Stack &S) {
S.top = -1; // 初始化栈顶指针为-1,表示栈为空
}
// 判断栈是否为空
bool StackEmpty(Stack S) {
return S.top == -1;
}
// 判断栈是否已满
bool StackFull(Stack S) {
return S.top == MAXSIZE - 1;
}
// 入栈
bool Push(Stack &S, SElemType e) {
if (StackFull(S)) {
return false; // 栈已满,无法入栈
}
S.top++; // 栈顶指针加1
S.data[S.top] = e; // 将元素e压入栈顶
return true;
}
// 出栈
bool Pop(Stack &S, SElemType &e) {
if (StackEmpty(S)) {
return false; // 栈为空,无法出栈
}
e = S.data[S.top]; // 将栈顶元素弹出,存储到e中
S.top--; // 栈顶指针减1
return true;
}
```
将这些操作函数添加到原有代码中后,即可运行。
阅读全文