思维导图
输入一个十进制的正数,转换乘其他进制
word.h
1 #ifndef WORD
2 #define WORD
3 #include<myhead.h>
4 #define max 8 //最大容量
5 typedef int datatype; //重定义类型名
6
7 typedef struct Node
8 {
9 datatype *data;//存储栈
10 int top;//记录栈顶元素的下标
11 }Node,*NodePtr;
12 //创建栈
13 NodePtr stack_create();
14
15 //判空
16 int stack_empty(NodePtr L);
17
18 //判满
19 int stack_full(NodePtr);
20
21 //入栈
22 void stack_push(NodePtr L,datatype e);
23 //出栈
24 void stack_pop(NodePtr L);
25
26 //转换函数
27 void stack_switch(NodePtr L,int a,int b);
28
29 //销毁栈
30 void stack_destroy(NodePtr L);
31
32 #endif
word.c
1 #include"word.h"
2
3 //创建栈
4 NodePtr stack_create()
5 {
6 NodePtr L=(NodePtr)malloc(sizeof(Node));
7 if(NULL==L)
8 {
9 printf("创建失败\n");
10 return NULL;
11 }
12 L->data=(datatype*)malloc(sizeof(datatype)*max);
13 if(NULL==L->data)
14 {
15 printf("创建失败\n");
16 return NULL;
17 }
18
19
20 memset(L->data,0,sizeof(datatype)*max);//初始化
21 L->top=-1;
22 printf("创建成功\n");
23 return L;
24
25 }
26
27
28 //判空
29 int stack_empty(NodePtr L)
30 {
31 return L->top==-1;
32 }
33 //判满
34 int stack_full(NodePtr L)
35 {
36 return L->top==max-1;
37 }
38 //入栈
39 void stack_push(NodePtr L,datatype e)
40 {
41 //判断逻辑
42 if(NULL==L||stack_full(L))
43 {
44 printf("入栈失败\n");
45 return ;
46 }
47
48
49 //入栈逻辑
50 L->top++;
51 L->data[L->top]=e;
52 }
53 //出栈
54 void stack_pop(NodePtr L)
55 {
56 if(NULL==L||stack_empty(L))
57 {
58 printf("出栈失败\n");
59 return ;
60 }
61 printf("%d\t",L->data[L->top]);
62 L->top--;
63 }
64
65
66 //转换函数
67 void stack_switch(NodePtr L,int a,int b)
68 {
69 //判断逻辑
70 if(L==NULL)
71 {
72 printf("转换失败\n");
73 return;
74 }
75 while(a>0)
76 {
77 stack_push(L,a%b);
78 a=a/b;
79 }
80 while(!stack_empty(L))
81 {
82 stack_pop(L);
83 }
84 printf("\n");
85 }
86
87
88 //销毁栈
89 void stack_destroy(NodePtr L)
90 {
91
92 if(L != NULL)
93 {
94 //销毁栈的容器
95 free(L->data);
96 L->data = NULL;
97
98 //销毁栈
99 free(L);
100 L = NULL;
101 }
102 printf("销毁成功\n");
103 }
main.c
1 #include"word.h"
2 int main(int argc, const char *argv[])
3 {
4 NodePtr L=stack_create();
5 if(NULL==L)
6 {
7 return -1;
8 }
9 int a=0;
10 int b=0;
11 printf("请输入一个整数:");
12 scanf("%d",&a);
13 printf("请输入转换的进制数;");
14 scanf("%d",&b);
15 stack_switch(L,a,b);
16 stack_destroy(L);
17 return 0;
18 }