问题描述
利用栈的数据结构实现将十进制数转换成二进制数
C语言实现
顺序表的存储结构实现栈
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#include <stdlib.h> #include <stdio.h> #define STACK_INIT_SIZE 100 //栈初始开辟空间大小 #define STACK_INCREMENT 10 //栈追加空间大小 //栈的结构体 typedef struct stack{ int *base; int *top; int size; }binStack; //栈初始化 binStack stack_init() { binStack bs; bs.base = ( int *) malloc ( sizeof ( int )*STACK_INIT_SIZE); bs.top = bs.base; bs.size = STACK_INIT_SIZE; return bs; } //入栈 void push(binStack *bs, int e) { if (bs->top - bs->base >= bs->size) { bs->size += STACK_INCREMENT; bs->base = realloc (bs->base, bs->size); } *(bs->top++) = e; } //出栈 int pop(binStack *bs) { if (bs->top != bs->base) { bs->top--; return *bs->top; } return -1; } //主函数 void main() { int dec; binStack bs = stack_init(); printf ( "请输入十进制整数:\n" ); scanf ( "%d" , &dec); while (dec) { push(&bs, dec%2); dec /= 2; } printf ( "转换后的二进制数是:\n" ); while (bs.top != bs.base) { printf ( "%d" , pop(&bs)); } printf ( "\n\n" ); system ( "date /T" ); system ( "TIME /T" ); system ( "pause" ); exit (0); } |
运行结果:
Python实现
对于stack我们可以使用python内置的list实现(也可以用链表实现),因为list是属于线性数组,在末尾插入和删除一个元素所使用的时间都是O(1),这非常符合stack的要求。
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import datetime / / 显示时间引入的库 import time / / from pip._vendor.distlib.compat import raw_input / / 使命令窗口不立即关闭引入的库 / / 栈类 class BinStack: def __init__( self ): self .bs = [] / / 入栈 def push( self , e): self .bs.append(e) / / 出栈 def pop( self ): if self .bs: return self .bs.pop() else : raise LookupError( "stack is empty!" ) / / 检查栈是否为空,是返回 False ,不是返回 True def isEmpty( self ): return bool ( self .bs) if __name__ = = '__main__' : binStack = BinStack() dec = int ( input ( "请输入十进制整数:\n" )) print ( "转换后的二进制数是:" ) while dec ! = 0 : binStack.push(dec % 2 ) dec / / = 2 while binStack.isEmpty() = = True : print ( "{}" . format (binStack.pop()), end = "") else : print ( "\n" ) / / 打印时间 datetime = datetime.datetime.now() print (datetime.strftime( "%Y-%m-%d\n%H:%M:%S" )) / / 使命令窗口不立即关闭 input ( "Press Enter to exit…" ) |
运行结果:
以上就是Python和C语言利用栈分别实现进制转换的详细内容,更多关于Python进制转换的资料请关注服务器之家其它相关文章!
原文链接:https://blog.csdn.net/guanchazhe55/article/details/125653716