利用栈实现数据转换——十进制数转换为八进制。(带较多注释的,方便学习理解

顺序栈的存储结构
typedef struct{
ElemType *base;
ElemType *top;
int stacksize;
}SqStack;


#include<iostream>

#define OK 1
#define ERROR 0

typedef int Status;
using namespace std;

typedef struct StackNode {
    int data;
    struct StackNode *next;
} StackNode, *LinkStack;

// 链栈的初始化
Status InitStack(LinkStack &S) { // 构造一个空栈 S,栈顶指针置空
    S = NULL;
    return OK;
}
int StackEmpty(LinkStack &S)
{//若L为空栈,则返回1,否则返回0 
   if(S)   //非空 
     return 0;
   else
     return 1;    
}
// 链栈的入栈
Status Push(LinkStack &S, int e) {//在栈顶插入元素e
    LinkStack p;
    p = new StackNode; //生成新结点
    p->data = e; //将新结点数据域置为e
    p->next = S; //将新结点插入栈顶
    S = p; //修改栈顶指针为p
    return OK;
}

//  链栈的出栈
Status Pop(LinkStack &S, int e) {//删除S的栈顶元素,用e返回其值
    LinkStack p;
    if (S == NULL)
        return ERROR; //栈空
    e = S->data; //将栈顶元素赋给e
    p = S; //用p临时保存栈顶元素空间,以备释放
    S = S->next; //修改栈顶指针
    delete p; //释放原栈顶元素的空间
    return OK;
}
void zh()     //对于任意一个非负十进制数,打印输出与其等值的八进制数 
{
    int e,m;
    LinkStack L;
    cout<<"输入需要转换的十进制数值:"<<endl;
    cin>>m;
    InitStack(L);     //初始化
    while(m)
    {
    Push(L,m%8);
        m=m/8;
    }
    cout<<"转换8进制后的数值是:"<<endl;
    while(Pop(L,e)) 
    {
        cout<<e;
    }
}

int main()
{
    zh();
    return 0;
}

您看这一个代码怎么样.
转载于:https://blog.csdn.net/Dustinthewine/article/details/125268717?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%B0%E5%8D%81%E8%BF%9B%E5%88%B6%E8%BD%AC%E6%8D%A2%E5%85%AB%E8%BF%9B%E5%88%B6c++&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-125268717.142^v68^control,201^v4^add_ask,213^v2^t3_esquery_v1&spm=1018.2226.3001.4187