链式栈 完成进制转换(十进制 转 八进制):

头文件

#ifndef __TRANSFORM_H__
#define __TRANSFORM_H__typedef int datatype;typedef struct Node
{union{datatype data;int len;};struct Node* top;
}Node,*LinkStack;// 创建
LinkStack create();// 判空
int empty(LinkStack L);// 入栈
int push(LinkStack L, datatype e);// 遍历
void show(LinkStack L);// 出栈
int pop(LinkStack L);// 销毁
void free_transform(LinkStack L);// 进制转换
int trans(LinkStack L,int n, int m);
#endif

源代码

#include <stdio.h>
#include <stdlib.h>
#include "transform.h"// 创建
LinkStack create()
{LinkStack L = (LinkStack)malloc(sizeof(Node));if(NULL == L){printf("创建链表失败\n");return NULL;}L->len = 0;L->top = NULL;printf("链表创建成功\n");return L;
}// 判空
int empty(LinkStack L)
{return L->top == NULL; // 1为空,0为非空
}// 入栈
int push(LinkStack L, datatype e)
{if(NULL == L){printf("入栈失败\n");return -1;}LinkStack p = (LinkStack)malloc(sizeof(Node));if(NULL == p){printf("结点封装失败\n");return -2;}p->data = e;p->top = NULL;p->top = L->top;L->top = p;L->len++;printf("入栈成功\n");return 0;
}// 遍历
void show(LinkStack L)
{if(NULL == L || empty(L)){printf("遍历失败\n");return;}LinkStack p = L->top; // 遍历指针while(NULL != p) // 遍历输出{printf("%d",p->data);p = p->top;}printf("\n");
}// 出栈
int pop(LinkStack L)
{if(NULL == L || empty(L)){printf("出栈失败\n");return -1;}LinkStack p = L->top;L->top = p->top;printf("出栈元素为:%d\n",p->data);free(p);p = NULL;return 0;
}// 销毁
void free_transform(LinkStack L)
{if(NULL == L){printf("销毁失败\n");return;}LinkStack p = L->top;while(NULL == p){pop(p);p = p->top;}free(L);L = NULL;printf("销毁成功\n");
}// 进制转换
int trans(LinkStack L,int n, int m) // n需要转换的数   m进制
{while(n/m != 0){push(L,n%m);n = n/m;}push(L,n);printf("转换后:\n");show(L);return 0;
}

主函数测试

#include <stdio.h>
#include "transform.h"int main(int argc, const char *argv[])
{/******链式栈 实现进制转换******/LinkStack L = create();int n=0;int m=0;printf("请输入需要转换的数n和进制m:\n");scanf("%d %d",&n,&m);trans(L,n,m);free_transform(L);return 0;
}

测试结果

ubuntu@ubuntu:transform$ ./a.out
链表创建成功
请输入需要转换的数n和进制m:
75 8
入栈成功
入栈成功
入栈成功
转换后:
113
销毁成功
ubuntu@ubuntu:transform$

2022081班李亚楠20220919相关推荐

  1. 2022081班李亚楠20220905

    1.使用指针实现 strcpy.strcat 函数的功能 #include <stdio.h>int main(int argc, const char *argv[]) {/***使用指 ...

  2. 2022081班李亚楠20220914

    //选择排序(作业) void list_select_sort(seqlist *S);//按位置查找,输出数据(作业) void list_search_pos(seqlist *S, int p ...

  3. 2022081班李亚楠20220920

    1.中序遍历:ADEFGHMZ       后序遍历:AEFDHZMG 2.前序遍历: GDAFEMHZ       中序遍历: ADEFGHMZ 1.前序遍历: GDAFEMHZ 2.后序遍历:AE ...

  4. 2022081班李亚楠20220926

    1.通过命令行传参给shell脚本文件传入两个字符串,把数值分别赋值给两个变量,实现两个变量的数值交换,然后输出两个变量的数值. #!/bin/bash #交换两个变量的值#从外部传参给变量 var1 ...

  5. 2022081班李亚楠20220901

    1.通过键盘输入6名学生的成绩,输出6名学生的成绩,使用冒泡法对班级学生的成绩升序排序,输出排序后成绩 #include <stdio.h>int main(int argc, const ...

  6. 2022081班李亚楠20220902

    1.从终端中输入一串字符,求出空格的个数: ab_cd_e_\n --->遇到\n表示输入结束         ---->数组中存储ab_cd_e ----->求出空格个数 #inc ...

  7. 2022081班李亚楠20220829

    1.从终端输入一个字符:如果是大写的 转换成小写,如果是小写的 转换成大写,如果是 0-9   按照 %d  输出对应整型的  0-9,其他字符 转换成 #并输出. #include <stdi ...

  8. 2022081班李亚楠20220927

    1.复习今日内容 2.在终端输入一个文件名,判断文件是否为空,如果不为空,判断文件是否是普通文件,如果是普通文件,就判断是否具有写权限,没有写权限,就加上写权限,并在文件最后追加一行"hel ...

  9. 2022081班李亚楠20220915

    //尾删 (作业) int list_delete_tail(LinkList L); //尾删 (作业) int list_delete_tail(LinkList L) {if(NULL==L | ...

最新文章

  1. Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)
  2. canvas 闭合_想使用SVG或者canvas 手绘闭合多边形,使用vml效果已经实现了,由于vml只能支持ie所以想转成SVG或canvas...
  3. 兰州理工大学计算机考研真题,2017年兰州理工大学计算机与通信学院893计算机操作系统考研题库...
  4. REMOTE HOST IDENTIFICATION HAS CHANGED
  5. boost::fusion::reverse_view用法的测试程序
  6. c语言 多个线程对同一变量执行memcpy_手把手带你实现线程池
  7. ping通网关 ping不通dns
  8. openresty json mysql_openresty 前端开发入门五之Mysql篇
  9. 阿里云产品汇总及解释
  10. 网络安全-SQL注入原理、攻击及防御
  11. 最速下降法matlab全局最小值_最速下降法+Matlab代码
  12. 超图(idesktop iserver10) 处理osgb倾斜摄影和tif并 发布 加载 ---2---连续更新
  13. 什么是pc104(转自孙新贺的博客)
  14. 互联网公司中秋节礼盒大比拼(2019版)
  15. vfp python_Python dbfpy和FoxPro
  16. android系统一直显示通知栏_Android通知栏详解
  17. 微信小程序为啥有的时候不显示封面广告、以及其他广告
  18. 教资计算机报高中害死初中,教师资格证报名入口必须电脑登录吗_中小学教师资格考试网...
  19. 比利时一年中遭受加密货币骗局损失近1000万欧元
  20. 【转】键盘灯亮无反映解决方法

热门文章

  1. 第二款上线的休闲益智数字闯关游戏---《进退维谷/digital Move》
  2. 【MySQL】事务及其隔离性/隔离级别
  3. mysql支持啥系统_MySQL支持的操作系统列表MySQL综合 -电脑资料
  4. c#读蓝牙数据_c#蓝牙通信接收数据
  5. 【解决Chrome浏览器和IE浏览器上传附件兼容的问题 -- Chrome关闭flash后,uploadify插件不可用的解决办法】
  6. 为什么阿里巴巴超级喜欢java开发?
  7. dos/ddos攻击与防范_ddos和dos
  8. mac cli文件管理器
  9. Smartbi助你解决银行高价值客户流失难题
  10. tcga样本编号_TCGA样本命名详解