#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语言链表栈实现进制转换相关推荐

  1. 重排链表-c语言链表法解决

    重排链表-c语言链表法解决 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → - → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → L ...

  2. c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数

    http://www.cnblogs.com/nio-nio/p/3309367.html /* // C prototype : void StrToHex(BYTE *pbDest, BYTE * ...

  3. java用链表做学生系统_C语言链表实现学生管理系统

    本文实例为大家分享了C语言链表实现学生管理系统的具体代码,供大家参考,具体内容如下 #include #include #include #include #include #include usin ...

  4. 十进制转换成十六进制c语言 链栈,C语言 链栈 实现十进制转换二进制,八进制,十六进制...

    C语言 链栈 实现十进制转换二进制,八进制,十六进制 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 最后运行结果:代码:#incl ...

  5. c语言二进制转换算法栈,用C语言顺序栈实现十进制和二进制的转换

    用C语言顺序栈实现十进制和二进制的转换 #include #include #include #define M 100 typedef int datatype; typedef struct{ d ...

  6. python列表输出学生姓名学号链表_c语言!!!程序设计:建立一个学生信息链表,包括学号,姓名,成绩.(实现添加,删除,查询,排序,平均)...

    展开全部 代码如下: /*用c语言链表编写一个学生信息系统程序,62616964757a686964616fe4b893e5b19e31333365656636要求输出学生的学号,姓名,性别, 学号, ...

  7. 算法精解_C语言 链表_单链表(接口定义+类型实现)

    链表可以说是一种最为基础的数据结构.链表由一组元素以一种特定的顺序组合或链接而成,在维护数据的集合时很有用.这一点同我们常用的数组很相似.然而,链表在很多情况下比数组更有优势.特别是在执行插入和删除操 ...

  8. c语言 链表_C语言编程第22讲——单向有序链表的C语言实现

    1.单向有序链表的含义 单向有序链表可以解析为四个名词: 表:一组元素: 链表:表中的元素不是从前往后一个挨着一个,而是通过一个元素才能找到另一个元素: 单向:表中的元素只能从前往后访问: 有序:表中 ...

  9. c语言十六进制转换加H,c语言十六进制和十进制间的转换.docx

    集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988) 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988) ...

  10. c语言能链表,C语言链表(能得懂的).ppt

    C语言链表(能得懂的) * 11.10 用typedef 为类型定义新名字 除可直接使用C提供的标准类型和自定义的类型(结构.共用.枚举)外,也可使用typedef定义已有类型的别名.该别名与标准类型 ...

最新文章

  1. 剪切粘贴时总是上次的内容_macOS系统上面如何实现Windows上的“剪切”功能
  2. PHP学习笔记1.2——预定义变量参考
  3. Java多线程的几种写法
  4. Qt在控制台输出中文的解决办法(转载)
  5. python列表生成多个号码_python遍历多个列表生成列表或字典
  6. idea中每次push/pull都需要输入账号密码
  7. 深入Java核心:JVM中的栈和局部变量
  8. java开放地址法和链地址法解决hash冲突
  9. 微信支付宝是如何赚钱的?
  10. Javascript屏蔽IE和Firefox浏览器默认按键响应(快捷键功能)
  11. python中plot不能显示标签_python 2: 解决python中的plot函数的图例legend不能显示中文问题...
  12. Python数据结构与算法(1.4)——Python基础之控制结构
  13. python计算平面的法向-利用协方差矩阵求解特征值和特征向量
  14. DLL分两种?用C#加载,有的成功,有的失败
  15. 深入浅出Mysql 读书笔记
  16. 开宗明义—UEFI介绍 (二)
  17. paypal如何支付欧元_paypal欧元付款的问题
  18. Python 实现毫秒级淘宝抢购脚本
  19. linux内核打补丁步骤
  20. sklearn:OneHotEncoder的简单用法

热门文章

  1. 本人博客已经转到简书,不再更新51cto,谢谢大家。
  2. Exchange 2010安装必要条件
  3. 7.软件架构设计:大型网站技术架构与业务架构融合之道 --- 框架、软件与中间件
  4. 1.剑指Offer --- 面试的流程
  5. 30.Linux/Unix 系统编程手册(上) -- 线程:线程同步
  6. 157. PHP 闭标签
  7. 117. php empty()函数坑
  8. java 插入 blob字段 clob字段
  9. offsetX、clientX、screenX、pageX、layerX
  10. getElementById和ByTagName的区别