本文主要是介绍栈的应用----数制转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
应用栈先进后出的原则完成十进制转换成二进制
代码:
#include <stdio.h>
#include <malloc.h>
typedef struct node{int data;struct node *next;
}Stack;void StackInit(Stack *top)
{top->next=NULL;
}
int Push(Stack *p,int x)
{Stack *a;a=(Stack *)malloc(sizeof(Stack));if(p==NULL)return 0;a->data=x;a->next=p->next;p->next=a;return 1;
}
int IsEmpty(Stack *top) //判断栈是否为空
{if(top->next==NULL)return 1;return 0;
}
int Pop(Stack *top,int *x)
{Stack *p;if(IsEmpty(top))return 0;p=top->next;*x=p->data;top->next=p->next;free(p);return 1;
}
int main()
{int x;Stack *top;top=(Stack *)malloc(sizeof(Stack));StackInit (top); //栈的初始化printf("decimal:\n"); //输入十进制数scanf("%d",&x);while(x){Push(top,x%2); //进栈x=x/2;}printf("binary:\n");while(Pop(top,&x)) //出栈{printf("%d",x); //输出二进制数}printf("\n");return 0;
}
这篇关于栈的应用----数制转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!