2022081班李亚楠20220919
链式栈 完成进制转换(十进制 转 八进制):
头文件
#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相关推荐
- 2022081班李亚楠20220905
1.使用指针实现 strcpy.strcat 函数的功能 #include <stdio.h>int main(int argc, const char *argv[]) {/***使用指 ...
- 2022081班李亚楠20220914
//选择排序(作业) void list_select_sort(seqlist *S);//按位置查找,输出数据(作业) void list_search_pos(seqlist *S, int p ...
- 2022081班李亚楠20220920
1.中序遍历:ADEFGHMZ 后序遍历:AEFDHZMG 2.前序遍历: GDAFEMHZ 中序遍历: ADEFGHMZ 1.前序遍历: GDAFEMHZ 2.后序遍历:AE ...
- 2022081班李亚楠20220926
1.通过命令行传参给shell脚本文件传入两个字符串,把数值分别赋值给两个变量,实现两个变量的数值交换,然后输出两个变量的数值. #!/bin/bash #交换两个变量的值#从外部传参给变量 var1 ...
- 2022081班李亚楠20220901
1.通过键盘输入6名学生的成绩,输出6名学生的成绩,使用冒泡法对班级学生的成绩升序排序,输出排序后成绩 #include <stdio.h>int main(int argc, const ...
- 2022081班李亚楠20220902
1.从终端中输入一串字符,求出空格的个数: ab_cd_e_\n --->遇到\n表示输入结束 ---->数组中存储ab_cd_e ----->求出空格个数 #inc ...
- 2022081班李亚楠20220829
1.从终端输入一个字符:如果是大写的 转换成小写,如果是小写的 转换成大写,如果是 0-9 按照 %d 输出对应整型的 0-9,其他字符 转换成 #并输出. #include <stdi ...
- 2022081班李亚楠20220927
1.复习今日内容 2.在终端输入一个文件名,判断文件是否为空,如果不为空,判断文件是否是普通文件,如果是普通文件,就判断是否具有写权限,没有写权限,就加上写权限,并在文件最后追加一行"hel ...
- 2022081班李亚楠20220915
//尾删 (作业) int list_delete_tail(LinkList L); //尾删 (作业) int list_delete_tail(LinkList L) {if(NULL==L | ...
最新文章
- Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)
- canvas 闭合_想使用SVG或者canvas 手绘闭合多边形,使用vml效果已经实现了,由于vml只能支持ie所以想转成SVG或canvas...
- 兰州理工大学计算机考研真题,2017年兰州理工大学计算机与通信学院893计算机操作系统考研题库...
- REMOTE HOST IDENTIFICATION HAS CHANGED
- boost::fusion::reverse_view用法的测试程序
- c语言 多个线程对同一变量执行memcpy_手把手带你实现线程池
- ping通网关 ping不通dns
- openresty json mysql_openresty 前端开发入门五之Mysql篇
- 阿里云产品汇总及解释
- 网络安全-SQL注入原理、攻击及防御
- 最速下降法matlab全局最小值_最速下降法+Matlab代码
- 超图(idesktop iserver10) 处理osgb倾斜摄影和tif并 发布 加载 ---2---连续更新
- 什么是pc104(转自孙新贺的博客)
- 互联网公司中秋节礼盒大比拼(2019版)
- vfp python_Python dbfpy和FoxPro
- android系统一直显示通知栏_Android通知栏详解
- 微信小程序为啥有的时候不显示封面广告、以及其他广告
- 教资计算机报高中害死初中,教师资格证报名入口必须电脑登录吗_中小学教师资格考试网...
- 比利时一年中遭受加密货币骗局损失近1000万欧元
- 【转】键盘灯亮无反映解决方法
热门文章
- 第二款上线的休闲益智数字闯关游戏---《进退维谷/digital Move》
- 【MySQL】事务及其隔离性/隔离级别
- mysql支持啥系统_MySQL支持的操作系统列表MySQL综合 -电脑资料
- c#读蓝牙数据_c#蓝牙通信接收数据
- 【解决Chrome浏览器和IE浏览器上传附件兼容的问题 -- Chrome关闭flash后,uploadify插件不可用的解决办法】
- 为什么阿里巴巴超级喜欢java开发?
- dos/ddos攻击与防范_ddos和dos
- mac cli文件管理器
- Smartbi助你解决银行高价值客户流失难题
- tcga样本编号_TCGA样本命名详解