十进制转换二进制--栈实现

女爷i 2022-12-17 05:24 252阅读 0赞

C语言十进制转换二进制,用顺序栈实现。
完整代码如下:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAXSIZE 20 //静态顺序栈存储的最大空间
  4. typedef struct
  5. {
  6. int data[MAXSIZE];//静态顺序栈可用的最大容量
  7. int top;//栈顶
  8. }SqStack;
  9. void InitStack(SqStack &S)//栈的初始化
  10. {
  11. S.top = -1;//静态顺序栈中,使S.top=-1便是对栈的初始化
  12. }
  13. int Push(SqStack &S,int e)//进栈
  14. {
  15. if(S.top==MAXSIZE-1)//判断栈是否为满
  16. {
  17. printf("栈满!\n");
  18. return 0;
  19. }
  20. S.data[++S.top]=e;//S.top自加一,使S.top=0,使输入的e值导入栈中
  21. return 0;
  22. }
  23. void Pop(SqStack &S)//使栈顶元素出栈,并输出栈顶元素,且栈长减一
  24. {
  25. if(S.top == -1)//判断栈是否为空
  26. printf("栈空!\n");
  27. else
  28. printf("%d",S.data[S.top--]);//输出栈顶元素
  29. }
  30. void Binary(SqStack S)//十进制转二进制函数
  31. {
  32. int a,
  33. i = 0;
  34. printf("请输入十进制数: ");
  35. scanf("%d",&a);//输入任意的十进制数
  36. while(a)//循环结束条件是a为0
  37. {
  38. Push(S,a%2);//余数进栈
  39. a = a/2;//由于是整数形式,不存在除不尽的状况,假设a=1,除2等于0
  40. i++;//记录进栈多少次 ,方便出栈操作
  41. }
  42. while(i)//循环终止条件是i为0
  43. {
  44. Pop(S);//依次输出栈顶元素
  45. i--;
  46. }
  47. }
  48. int main()
  49. {
  50. SqStack S;
  51. InitStack(S);//创建一个栈,并初始化
  52. Binary(S);//进制转换
  53. return 0;
  54. }

(完)

发表评论

表情:
评论列表 (有 0 条评论,252人围观)

还没有评论,来说两句吧...

相关阅读

    相关 十进制转换二进制

    输入一个十进制的数,将其转换为二进制!!(也适用于八进制!当然,代码中的2就要变为8了) (如有错误,欢迎提出) //十进制转换为二进制