栈的进制转换【链栈实现】
思路:循环把余数入栈
循环出栈,直到栈空为止
head.h
#ifndef __HEAD_H__
#define __HEAD_H__
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef int datatype;
typedef struct Node
{
union
{
int len;
datatype data;
};
struct Node *next;
}*linkstack;
linkstack create_head();
linkstack create_node();
int linkstack_push(linkstack top,datatype e);
int linkstack_pop(linkstack top);
void linkstack_output(linkstack top);
linkstack linkstack_free(linkstack top);
#endif
main.c
int n;
int m;
datatype e;
linkstack top=create_head();
printf("请输入输入需要转换的十进制数:");
scanf("%d",&n);
printf("输入需要转换的进制:");
scanf("%d",&m);
while(n>0)
{
e=n%m;
linkstack_push(top,e);
n=n/m;
}
linkstack_output(top);
linkstack_free(top);
return 0;
test.c
linkstack create_head()
{
linkstack top=(linkstack)malloc(sizeof(struct Node));
//判断
if(top==NULL)
return NULL;
top->len=0;
top->next=NULL;
return top;
}
//遍历
void linkstack_output(linkstack top)
{
puts("");
linkstack p=top;
while(p->next!=NULL)
{
p=p->next;
printf("%d\n",p->data);
}
puts("");
}
//释放
linkstack linkstack_free(linkstack top)
{
if(top==NULL)
return NULL;
int n=top->len;
for(int i=0;i<n;i++)
linkstack_pop(top);
free(top);
top=NULL;
return top;
}
结果没完整出来