A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 漩涡java 中级黑马   /  2014-2-20 16:22  /  809 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include<iostream>
using namespace std;
typedef int Elemtype;
typedef struct snode{
    Elemtype data;
    struct snode *next;
}Linkstack;
void Initstack(Linkstack **top)
{*top=(Linkstack *)malloc(sizeof(Linkstack));
(*top)->next=NULL;
cout<<"栈初始化成功!\n";
}
int push(Linkstack **top,Elemtype x)
{
    Linkstack *s;
    s=(Linkstack*)malloc(sizeof(Linkstack));
    s->data=x;
    s->next=(*top)->next;
    (*top)->next=s;
    return 1;

}
int Empty(Linkstack **top)
{return ((*top)->next==NULL?1:0);}
int pop(Linkstack **top,Elemtype *x)
{
    Linkstack *s;
    if(Empty(top))
    {
        cout<<"\n 栈为空!";
        return 0;
    }
        s=(*top)->next;
        *x=s->data;
        (*top)->next=s->next;
        free(s);
        return 1;
}
//队列功能的实现
typedef struct qnode{
    Elemtype data;
    struct qnode *next;
}qtype;
typedef struct sqtr{
    qtype *front,*rear;
}squeue;
void Initqueue(squeue *LQ)
{
    qtype *p;
    p=(qtype *)malloc(sizeof(qtype));
    p->next=NULL;
    LQ->front=LQ->rear=p;
    cout<<"队列初始化成功!\n";
}
int Enqueue(squeue *LQ,Elemtype x)
{
    qtype *s;
    s=(qtype *)malloc(sizeof(qtype));
    s->data=x;
    s->next=LQ->rear->next;
    LQ->rear->next=s;
    LQ->rear=s;
    return 1;
}
int Empty(squeue *LQ)
{return(LQ->front==LQ->rear?1:0);}
int Outqueue(squeue *LQ,Elemtype *x)
{
    qtype *p;
    if(Empty(LQ))
    {
        cout<<"队列为空!";
        return 0;
    }
    p=LQ->front->next;
    *x=p->data;
    LQ->front->next=p->next;
    if(LQ->front->next==NULL)
        LQ->rear=LQ->front;
    free(p);
    return 1;
}

void Dectoothers(int n,int b)
{
    char B[]="0123456789ABCDEF";
    Elemtype a,c;
    Linkstack *top;
    squeue LQ;
    Initstack (&top);
    Initqueue(&LQ);
    cout<<n<<"转化为"<<b<<"进制数为:";
    while(n)
    {
        push(&top,n%b);
        n=n/b;
    }
    while(!Empty(&top))
    {
        pop(&top,&a);
        Enqueue(&LQ,a);
        Outqueue(&LQ,&c);
        cout<<B[c]<<' ';
    }

    cout<<endl;
}
int main()
{
    char s;
    int n,b;
    do
    {
      cout<<"请输入要转化成其他进制数的非负数:";
      cin>>n;
      cout<<"请输入需要转化成的进制:";
      cin>>b;
      Dectoothers(n,b);
      cout<<"需要结束请输入N/n,继续输入Y/y:";
      cin>>s;
    }while((s!='n') && (s!='N'));
      return 0;
}

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马