顺序栈的进制转换

//顺序栈 
#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 100

struct stack {						//建立结构体 
	int elem[MAXSIZE];
	int top;
}; 

//struct stack *s;			//建立一个包含两个元素的栈
					
void in_stack(struct stack *s,int x)	//入栈 
{	
	while(x!=0)
	{
		s->elem[s->top+1]=x%2;		//栈的元素从0开始存 ++s.top余数放入elem数组中
		s->top++;					//指向下一个 
		x=x/2;						//改变x的值
	}
	
}
 
int out_stack(struct stack *s)	//出栈 
{
	int x;
	while(s->top!=-1)				//当s->top等于-1时结束循环 ,栈空 
	{
		//printf("%d",s->elem[s->top]);
		x=s->elem[s->top];			
		s->top--;
		printf_stack(x);			//不需要加return ,调用printf_stack输出 
			
	}
		
} 

void input_stack(int *x)			//输入一个十进制数 
{
		
	printf("\n->请输入一个十进制数:");
	scanf("%d",x);	
	printf("\n->输入的十进制数对应的二进制数:");
} 

int printf_stack(int x)					//输出转换的二进制数 
{
	printf("%d",x);
	
}


void main()
{	
	int x;
	struct stack *s;				//建立一个包含两个元素的链式表 *s代表指针需要开辟空间
	s=(struct stack *)malloc(sizeof(struct stack));	//开辟存储空间 
	s->top=-1;			//初始化 
	input_stack(&x);
	in_stack(s,x);
	out_stack(s);
	//printf_stack(k);
	 
}

 

posted @ 2019-09-29 09:49  JackieDYH  阅读(7)  评论(0编辑  收藏  举报  来源