/*自定义栈和队列实现 进制转化 十进制转二进制*/
#include <iostream>
#include <string.h>
using namespace std;
typedef struct SNode{
int data;
SNode *next;
}SNode,*LinkStack;
/*栈初始化*/
void InitStack(LinkStack &S)
{
//初始化---建立头结点
S=(SNode*)malloc(sizeof(SNode));
if(!S)
{
cout<<"初始化分配内存失败!";
return;
}
S->next=NULL;
}
/*入栈*/
void Push(LinkStack &S,int e)
{
//建立结点
SNode* p=(SNode*)malloc(sizeof(SNode));
p->data=e;
//入栈---链表头插法插入结点
p->next=S->next;
S->next=p;
}
/*出栈*/
int Pop(LinkStack &S)
{
char e;
//判断栈是否为空 栈空则不进行出栈
if(S->next==NULL) return ' ';
//保存出栈元素数据
SNode* p=S->next;//出栈元素
e=p->data;
//出栈
S->next=p->next;
free(p);
return e;
}
/*判断栈是否为空*/
bool Empty(LinkStack S)
{
if(S->next==NULL) return true;
else return false;
}
/*获取栈顶元素数据*/
int Top(LinkStack S)
{
return S->next->data;
}
/*遍历栈*/
void StackTraverse(LinkStack S)//以visit方法访问链表每个结点
{
cout<<"栈:";
SNode *p=S->next;
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
int main()
{
int n;
LinkStack s;
InitStack(s);
cout<<"请输入一个十进制整数"<<endl;
cin>>n;
while(n)
{
Push(s,n%2);
n=n/2;
}
cout<<"对应的二进制数为:";
while(!Empty(s))
{
cout<<Top(s);
Pop(s);
}
return 0;
}
自定义栈实现进制转化 十进制转二进制
最新推荐文章于 2024-07-10 16:47:58 发布