栈的应用_数值转换

//

//  main.cpp

//  stack_数制转换

//

//  Created by 王寿年 on 15/9/26.

//  Copyright © 2015 王寿年. All rights reserved.

//


#include <iostream>


using namespace std;


#define stack_init_size 100


typedef struct {

    int *top;

    int *base;

    int stacksize;

}Stack;


void StackInit(Stack &s)


{

    s.base = new int[stack_init_size];

    s.top = s.base;

    s.stacksize = stack_init_size;

}


bool StackFull(Stack &s)


{

    if((int)(s.top - s.base) >= s.stacksize)

        return true;

    else

        return false;

}


bool StackEmpty(Stack &s)


{

    if(s.top == s.base)

        return true;

    else

        return false;

}


void push(Stack &s,int e)


{

    if(StackFull(s) == true)

    {

        cout << "栈已经满了" << endl;

        exit(-2);

    }

    *s.top++ = e;

}


void pop(Stack &s,int &e)


{

    if(StackEmpty(s) == true)

    {

        cout << "栈已经空了" << endl;

        exit(-2);

    }

    e = *--s.top;

}


int StackLength(Stack &s)


{

    return (int)(s.top - s.base);

}


void StackDestory(Stack &s)


{

    if(s.base)

    {

        delete []s.base;

        s.top = s.base = NULL;

        s.stacksize = 0;

    }

}


void StackClear(Stack &s)


{

    s.top = s.base;

}


void conversion()


{

    Stack s;

    StackInit(s);

    int n;

    cin >> n;

    int m;

    cin >> m;

    while(n)

    {

        push(s,n % m);

        n /= m;

    }

    while(!StackEmpty(s))

    {

        int e;

        pop(s,e);

        cout << e;

    }

    cout << endl;

    StackDestory(s);

}


void GetTop(Stack &s,int &e)


{

    if(StackEmpty(s) == true)

    {

        cout << "栈已经空了" << endl;

        exit(-2);

    }

    e = *(s.top - 1);

}


int main()


{

     conversion();

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值