案例一:十进制数转换成八进制数
// 数制的转换 将一个十进制的数转化成八进制输出
#include <stdio.h>
#include <iostream>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OVERFLOW -1
typedef int SElemtype;
typedef int Status;
typedef struct SNode
{
SElemtype data;
struct SNode *next;
} SNode, *LinkStack;
// 初始化一个空栈
Status InitStack(LinkStack &S)
{
S = NULL;
return OK;
}
// 入栈
Status Push(LinkStack &S, SElemtype e)
{
SNode *p = new SNode;
p->data = e;
p->next = S;
S = p;
return OK;
}
// 出栈
Status Pop(LinkStack &S, SElemtype &e)
{
if (!S)
return ERROR;
SNode *p = S;
e = p->data;
S = S->next;
delete p;
return OK;
}
// 栈是否为空
Status StackEmpty(LinkStack S)
{
if (!S)
return TRUE;
return FALSE;
}
// 将十进制数N转换成八进制数输出
void conversion(int N)
{
LinkStack S;
InitStack(S);
printf("十进制数%d转换成八进制为:", N);
while (N)
{
Push(S, N % 8);
N = N / 8;
}
while (!StackEmpty(S))
{
SElemtype e;
Pop(S, e);
printf("%d", e);
}
printf("\n");
}
int main(void)
{
printf("十进制数转换成八进制数:\n");
printf("请输入十进制数N:");
int N;
std::cin >> N;
conversion(N);
return 0;
}
暑假自学数诀结构,有错请谅解。