java 进制转换 栈 链表_任意进制数的转换(链表栈的实现)

#include#define MAX_DATA_STRING_LENGTH 25

typedef char ElemType;

/*

采取链表的数据结构实现

栈,可实现二至十六进制

至二至十六进制的数据的

转换,稍加扩展即可实现

任意进制的数据的转换.

any question,please contact me:

askme163@http://www.doczj.com/doc/fa5493aed1f34693daef3ebb.html

*/

//链栈结构定义

struct stack{

ElemType data;

struct stack *next;

};

//初始化栈,栈首节点不存储数据

void initStack(struct stack *&s)

{

s=(struct stack *)malloc(sizeof(struct stack));

s->next=NULL;

}

//压栈操作

bool push(struct stack *&s,ElemType e)

{

struct stack *p=(struct stack *)malloc(sizeof(struct stack));

if(p==NULL)

return false;

p->data=e;

p->next=NULL;

struct stack *t=s;

while(t->next!=NULL)

t=t->next;

t->next=p;

return true;

}

//出栈操作

bool pop(struct stack *&s,ElemType &e)

{

struct stack *p=s;

struct stack *pre;

if(p->next==NULL)

return false;

while(p->next!=NULL)

{

pre=p;

p=p->next;

}

e=p->data;

free(p);

pre->next=NULL;

return true;

}

//销毁栈

void destoryStack(struct stack *&s)

{

struct stack *p=s;

s=s->next;

while(p->next!=NULL)

{

free(p);

p=s;

s=s->next;

}

free(p);

}

//根据字母匹配相应的字母,例如10应匹配A

int matchNum(char ch)

{

switch(ch)

{

case '0': return 0;

case '1': return 1;

case '2': return 2;

case '3': return 3;

case '4': return 4;

case '5': return 5;

case '6': return 6;

case '7': return 7;

case '8': return 8;

case '9': return 9;

case 'A': return 10;

case 'B': return 11;

case 'C': return 12;

case 'D': return 13;

case 'E': return 14;

case 'F': return 15;

default: return -1;

}

}

//根据数字匹配字母,例如10匹配成A

char matchChar(int num)

{

switch(num)

{

case 0: return '0';

case 1: return '1';

case 2: return '2';

case 3: return '3';

case 4: return '4';

case 5: return '5';

case 6: return '6';

case 7: return '7';

case 8: return '8';

case 9: return '9';

case 10: return 'A';

case 11: return 'B';

case 12: return 'C';

case 13: return 'D';

case 14: return 'E';

case 15: return 'F';

default: return '#';

}

}

//判断输入初始数字串是否合法

bool isLegalString(char *str,int orgBin)

{

char chArray[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

int i=0;

while(str[i]!='#')

{

int j=0;

while(j{

if(chArray[j]==str[i])

break;

else

j++;

}

if(j==orgBin)

return false;

else

i++;

}

return true;

}

//返回数字串的长度

int length(char *str)

{

int i=0;

while(str[i]!='#')

i++;

return i;

}

void main()

{

int temp;

struct stack *s;

int orgBin;

char *dataString=(char*)malloc(MAX_DATA_STRING_LENGTH

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值