棧的應用 -內容:輸入一個十進制數,利用棧操作,將該數轉換成n進制數。

#include<stdio.h>
#include<stdlib.h> 
#define stackinitsize 100
#define stackincrement 10
typedef struct{
	int *base;
	int top;
	int stacksize;
}sqstack;
void initstack(sqstack &S){
	//初始化 
	S.base=(int*)malloc(stackinitsize*sizeof(int));
	if(!S.base)
		return;
	S.top=0;
	S.stacksize=stackinitsize;
}
int stackempty(sqstack S){
	//判空 
	if(S.top==0)
		return 1;
	return 0; 
}
void push(sqstack &S,int e){
	//入棧
	if(S.top>S.stacksize){
		S.base=(int*)realloc(S.base,(S.stacksize+stackincrement)*sizeof(int));
		if(!S.base)
			return;
		S.stacksize+=stackincrement;
	}
	S.base[++S.top]=e;
}
void pop(sqstack &S,int &e){
	//出棧 
	if(S.top==0)
		return;
	e=S.base[S.top--];
}
void conversion(int n,int d)
{
	//進制轉化 
	sqstack S;
	initstack(S);
	while(n){
		push(S,n%d);
		n=n/d;
	}
	while(!stackempty(S)){
		int e;
		pop(S,e);
		if(e>=10)
			printf("%c",e-10+'A');
		else
			printf("%d",e);
	}
}
int main()
{
	int m,d;
	scanf("%d%d",&m,&d);
	conversion(m,d);
	return 0;
 } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章