栈的应用--数制转换(十进制数转换为二进制、八进制、十六进制)

来源:互联网 发布:js动态添加删除表格行 编辑:程序博客网 时间:2024/04/26 15:01

结果图:
这里写图片描述

代码如下:

#include<stdio.h>#include<stdlib.h>#define ERROR 0#define OK 1typedef int Status;typedef int ElemType;typedef struct StackNode{    ElemType data;    struct StackNode *next;}StackNode,*LinkStack;void InitStack(LinkStack &s){   //初始化    s=(LinkStack)malloc(sizeof(StackNode));    s=NULL;}bool StackEmpty(LinkStack s){ //判空    return (s==NULL);}Status PushStack(LinkStack &s,ElemType e){  //入栈    LinkStack p=(LinkStack)malloc(sizeof(StackNode));    p->data=e;    p->next=s;    s=p;    return OK;}Status PopStack(LinkStack &s,ElemType *e){  //出栈    LinkStack p=(LinkStack)malloc(sizeof(StackNode));    if(s==NULL)        return ERROR;    *e=s->data;    p=s;    s=s->next;    free(p);    return OK;}void main(){    LinkStack s;    InitStack(s);    int n,choice;    ElemType e;    printf("请输入一个十进制数:");    scanf("%d",&n);    printf("请输入要转换的进制数:");    scanf("%d",&choice);    switch(choice){        case 2: case 8:            while(n) {                PushStack(s,n%choice);                n=n/choice;            }            while(s){                PopStack(s,&e);                printf("%d",e);            }            printf("\n");            break;        case 16:            while(n){                PushStack(s,n%choice);                n=n/choice;            }            while(s){                PopStack(s,&e);                if(e>=10){                    e+=55;                    printf("%c",e);                }                else{                    printf("%d",e);                }            }            printf("\n");            break;    }}
0 0
原创粉丝点击