java 进制转换 栈 链表_c语言链表栈实现进制转换
#include
#include
#define ElemType int
typedef struct{
ElemType e;
struct Node *next;
}Node,*pNode,**ppNode;//使用pNode表示一级指针,ppNode表示二级指针
//计算整数n的m次方
int pow2(int n,int m);
int getElemNum(pNode head);
pNode getLastElem(pNode head);
void push(ppNode head,ElemType e);
ElemType pop(ppNode head);
void showElem(pNode head);
pNode getElem(pNode head,int i);
int main(int argc, char *argv[])
{
printf("%d\n",changto2(10));
printf("%d\n",changto10(1010));
return 0;
}
int changto2(int n){
if(n<0) return -1;
if(n==0) return 0;
int i,j,k,sum=0;
pNode head=NULL;
while(n!=0){
i=n%2;
n=(n-i)/2;
push(&head,i);
}
k=getElemNum(head);
for(j=k;j>0;j--){
int t = pop(&head);
int x = pow2(10,j-1);
sum=t*x+sum;
}
return sum;
}
int pow2(int n,int m){
int sum=1,i=0;
for(i=0;i
sum=sum*n;
}
return sum;
}
int changto10(int n){
if(n<0) return -1;
if(n==0) return 0;
int i,j,k,sum=0;
pNode head=NULL;
while(n!=0){
i=n%10;
n=n/10;
push(&head,i);
}
k=getElemNum(head);
for(j=k;j>0;j--){
int t = pop(&head);
int x = pow2(2,j-1);
sum=t*x+sum;
}
return sum;
}
int getElemNum(pNode head){
if(!head) return 0;
pNode p=head;
int i=0;
while(p){
i++;
p=p->next;
}
return i;
}
pNode getLastElem(pNode head){
if(!head) return NULL;
pNode p=head;
while(p->next) p=p->next;
return p;
}
void push(ppNode head,ElemType e){
pNode node = (pNode)malloc(sizeof(Node));
node->e=e;
node->next=NULL;
if(!*head){
*head=node;
return;
}
pNode p;
p=getLastElem(*head);
p->next=node;
}
ElemType pop(ppNode head){
int n =getElemNum(*head);
ElemType e;
if(n<1) return;
if(n==1){
e=(*head)->e;
free(*head);
*head=NULL;
return e;
}
pNode p = getElem(*head,n-1);
pNode t=p->next;
e=t->e;
free(p->next);
p->next=NULL;
return e;
}
pNode getElem(pNode head,int i){
int n = getElemNum(head);
if(i<1 || i>n) return;
int j=1;
pNode p=head;
while(j
j++;
p=p->next;
}
return p;
}
void showElem(pNode head){
if(!head){
printf("empty link\n");
return;
}
pNode p =head;
int n =getElemNum(head);
printf("this link has %d elems\n",n);
while(p){
printf("%d ",p->e);
p=p->next;
}
printf("\n");
return;
}
java 进制转换 栈 链表_c语言链表栈实现进制转换相关推荐
- 重排链表-c语言链表法解决
重排链表-c语言链表法解决 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → - → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → L ...
- c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数
http://www.cnblogs.com/nio-nio/p/3309367.html /* // C prototype : void StrToHex(BYTE *pbDest, BYTE * ...
- java用链表做学生系统_C语言链表实现学生管理系统
本文实例为大家分享了C语言链表实现学生管理系统的具体代码,供大家参考,具体内容如下 #include #include #include #include #include #include usin ...
- 十进制转换成十六进制c语言 链栈,C语言 链栈 实现十进制转换二进制,八进制,十六进制...
C语言 链栈 实现十进制转换二进制,八进制,十六进制 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 最后运行结果:代码:#incl ...
- c语言二进制转换算法栈,用C语言顺序栈实现十进制和二进制的转换
用C语言顺序栈实现十进制和二进制的转换 #include #include #include #define M 100 typedef int datatype; typedef struct{ d ...
- python列表输出学生姓名学号链表_c语言!!!程序设计:建立一个学生信息链表,包括学号,姓名,成绩.(实现添加,删除,查询,排序,平均)...
展开全部 代码如下: /*用c语言链表编写一个学生信息系统程序,62616964757a686964616fe4b893e5b19e31333365656636要求输出学生的学号,姓名,性别, 学号, ...
- 算法精解_C语言 链表_单链表(接口定义+类型实现)
链表可以说是一种最为基础的数据结构.链表由一组元素以一种特定的顺序组合或链接而成,在维护数据的集合时很有用.这一点同我们常用的数组很相似.然而,链表在很多情况下比数组更有优势.特别是在执行插入和删除操 ...
- c语言 链表_C语言编程第22讲——单向有序链表的C语言实现
1.单向有序链表的含义 单向有序链表可以解析为四个名词: 表:一组元素: 链表:表中的元素不是从前往后一个挨着一个,而是通过一个元素才能找到另一个元素: 单向:表中的元素只能从前往后访问: 有序:表中 ...
- c语言十六进制转换加H,c语言十六进制和十进制间的转换.docx
集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988) 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988) ...
- c语言能链表,C语言链表(能得懂的).ppt
C语言链表(能得懂的) * 11.10 用typedef 为类型定义新名字 除可直接使用C提供的标准类型和自定义的类型(结构.共用.枚举)外,也可使用typedef定义已有类型的别名.该别名与标准类型 ...
最新文章
- 剪切粘贴时总是上次的内容_macOS系统上面如何实现Windows上的“剪切”功能
- PHP学习笔记1.2——预定义变量参考
- Java多线程的几种写法
- Qt在控制台输出中文的解决办法(转载)
- python列表生成多个号码_python遍历多个列表生成列表或字典
- idea中每次push/pull都需要输入账号密码
- 深入Java核心:JVM中的栈和局部变量
- java开放地址法和链地址法解决hash冲突
- 微信支付宝是如何赚钱的?
- Javascript屏蔽IE和Firefox浏览器默认按键响应(快捷键功能)
- python中plot不能显示标签_python 2: 解决python中的plot函数的图例legend不能显示中文问题...
- Python数据结构与算法(1.4)——Python基础之控制结构
- python计算平面的法向-利用协方差矩阵求解特征值和特征向量
- DLL分两种?用C#加载,有的成功,有的失败
- 深入浅出Mysql 读书笔记
- 开宗明义—UEFI介绍 (二)
- paypal如何支付欧元_paypal欧元付款的问题
- Python 实现毫秒级淘宝抢购脚本
- linux内核打补丁步骤
- sklearn:OneHotEncoder的简单用法
热门文章
- 本人博客已经转到简书,不再更新51cto,谢谢大家。
- Exchange 2010安装必要条件
- 7.软件架构设计:大型网站技术架构与业务架构融合之道 --- 框架、软件与中间件
- 1.剑指Offer --- 面试的流程
- 30.Linux/Unix 系统编程手册(上) -- 线程:线程同步
- 157. PHP 闭标签
- 117. php empty()函数坑
- java 插入 blob字段 clob字段
- offsetX、clientX、screenX、pageX、layerX
- getElementById和ByTagName的区别