版权声明:欢迎大佬批评指正!O(∩_∩)O https://blog.csdn.net/wyh1618/article/details/82663117
2239: 十进制与八进制的转换(栈和队列)
题目描述
对于输入的任意一个非负十进制整数,利用栈打印输出与其等值的八进制数。
输入
111
输出
157
#include<cstdio>
#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct linknode
{
int data;
struct linknode *next;
}LinkStNode;
void InitStack(LinkStNode *&s)
{
s=(LinkStNode *)malloc(sizeof(LinkStNode));
s->next=NULL;
}
void DestoryStack(LinkStNode *&s)
{
LinkStNode *pre=s,*p=s->next;
while(p!=NULL)
{
free(pre);
pre=p;
p=p->next;
}
free(pre);
}
bool StackEmpty(LinkStNode *s)
{
return (s->next==NULL);
}
void push(LinkStNode *&s,int e)
{
LinkStNode *p;
p=(LinkStNode *)malloc(sizeof(LinkStNode));
p->data=e;
p->next=s->next;
s->next=p;
}
bool pop(LinkStNode *&s,int &e)
{
LinkStNode *p;
if(s->next==NULL)
return false;
p=s->next;
e=p->data;
s->next=p->next;
free(p);
return true;
}
bool GetTop(LinkStNode *s,int &e)
{
if(s->next==NULL)
return false;
e=s->next->data;
return true;
}
int main()
{
int n,e;
LinkStNode *s;
InitStack(s);
cin>>n;
while(n)
{
push(s,n%8);
n/=8;
}
while(!StackEmpty(s))
{
pop(s,e);
cout<<e;//<<endl;
}
}