数据结构―进制转换完整C语言代码数据结构―进制转换完整C语言代码
/*以下为顺序栈实现方式*/
#include "stdio.h"
#define STACK_INIT_SIZE 100 #define STACK_INCREMENT 10
#define OVERFLOW -1
#define OK 2 #define YES 1 #define NO 0 #define ERROR -2 typedef int Selemtype;
typedef int Status;
typedef struct{
Selemtype *base;...
数据结构―进制转换完整C语言代码
/*以下为顺序栈实现方式*/
#include "stdio.h"
#define STACK_INIT_SIZE 100 #define STACK_INCREMENT 10
#define OVERFLOW -1
#define OK 2 #define YES 1 #define NO 0 #define ERROR -2 typedef int Selemtype;
typedef int Status;
typedef struct{
Selemtype *base;
Selemtype *top;
int stacksize;
}Sqstack;
Status Initstack(Sqstack *S){
S->base=(Selemtype *)malloc(STACK_INIT_SIZE*sizeof(Selemtype));
if (!S->base) exit (OVERFLOW);
S->top=S->base;
S->stacksize=STACK_INIT_SIZE;
return OK;
}
Status Emptystack(Sqstack *S){
if(S->base==S->top) return YES;
else return NO;
}
Status Push(Sqstack *S,Selemtype e){
if (S->top-S->base>=S->stacksize)
{S->base=(Selemtype
*)realloc(S->base,(S->stacksize+STACK_INCREMENT)*sizeof(Selemtype));
if (!S->base) exit (OVERFLOW);
S->top=S->base+S->stacksize;
S->stacksize+=STACK_INCREMENT;}
*S->top++=e;
return OK;
}
Status Pop(Sqstack *S,Selemtype *e){
if(S->top==S->base) return ERROR;
*e=*--S->top;
return OK;
}
main()
{
int *e,m,n;
Sqstack *s;
Initstack(s);
clrscr(); /*清屏函数,不同编译系统函数不同*/
printf("input m,n:\n");/*m是待转换的数,n是要转换的几进制*/
scanf("%d%d",&m,&n);
while(m)
{
Push(s,m%n);
m=m/n;
}
printf("the arranged NO. is:");
while(!Emptystack(s))
{
Pop(s,e);
if(*e>9) {*e=*e+'A'-10;printf("%c",*e);}/*十进制以上数用字母A、B、C……代替,即10
为A,11为B*/
else printf("%d",*e);
}
}
/*本程序使用栈的顺序
示法,本人自己编写并已在turbo c中调试,100%可正确运行,若
移植到VC6.0环境中,只需修改部分即可*/ /*THE END*/
/*以下为链栈实现方式*/
#include
#include
#define TRUE 1
#define FALSE 0
#define OK 0
#define ERROR -1
typedef struct SNode{
int data;
struct SNode *next; }SNode;
typedef struct{
int length;
SNode *top;
}STACK;
void InitStack(STACK *S){
S->top=NULL;S->length=0; }
int Push(STACK *S,int e){
SNode *p;
p=(SNode *)malloc(sizeof(SNode));
if(!p) return ERROR;
p->data=e;p->next=S->top;
S->top=p;S->length++;
return OK;
}
int Pop(STACK *S,int *e){
SNode *p;
if(S->top==NULL) return ERROR;
p=S->top;*e=p->data;
S->top=p->next;S->length--;
return OK;
}
int Empty(STACK S){
if(S.top==NULL) return TRUE;
return FALSE;
}
int main(){
int m,n,*e;
STACK S;
printf("input m,n:\n");
scanf("%d%d",&m,&n);
InitStack(&S);
while(m)
{
Push(&S,m%n);
m=m/n;
}
printf("the arranged NO. is:");
while(!Empty(S))
{
Pop(&S,e);
if(*e>9) printf("%c",*e+'A'-10);
else printf("%d",*e);
}
putchar('\n');
}
/*本程序采用链栈的表示方法,同学编写,本人已在TURBO C中调试,100%可正确运行,
若转移到其他环境中,只需修改部分即可*/
/*THE END*/
本文档为【数据结构―进制转换完整C语言代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。