如何从堆栈末尾删除0

时间:2018-02-10 15:38:59

标签: c++

该函数处理一个字符串数组,并通过使用堆栈函数返回一个int值。 在堆栈中,要推送的第一个数字是最后一个要弹出的数字,因此循环从字符串的结尾开始。 它应该删除字符串开头的任何0 例如。 004912500 => 4912500 但我不知道如何确保我的循环能够在开始时区分0和0之后,因为字符都是从后面推出的。 getVP返回void指针的整数值

int getDecimal (const char stringOfDigits [])
{
    Stack S;
    int *temp;
    VoidPtr item;

    // Loop to get int value of each element of char array
    for (int i = strlen(stringOfDigits)-1; i >= 0; i--)
        {
                if (isdigit(stringOfDigits[i]))
                    {
                        if (stringOfDigits[i] != '0')
                            {
                                temp = new int;
                                *temp = (stringOfDigits[i] - '0');
                                item = temp;
                                S.push(item);
                            }                       
                    }
        }

    while(!S.isEmpty())
        {
            item = S.pop();
            cout << S.getVP(item);
        }

    cout << endl;
}

1 个答案:

答案 0 :(得分:0)

在开始打印之前略过0

int getDecimal (const char stringOfDigits [])
{
    Stack S;
    int *temp;
    VoidPtr item;

    int i = strlen(stringOfDigits)-1;

    // Loop to get int value of each element of char array
    for (; i >= 0; i--)
        {
                if (isdigit(stringOfDigits[i]))
                    {
                        if (stringOfDigits[i] != '0')
                            {
                                temp = new int;
                                *temp = (stringOfDigits[i] - '0');
                                item = temp;
                                S.push(item);
                            }                       
                    }
        }

    if(!S.isEmpty())
    {
        item = S.pop();
        //skip the 0's
        while((item == 0) && !S.isEmpty())
        {
            item = S.pop();
        }
        //output the first valid item, or a 0 if it's filled with 0 
        cout << S.getVP(item);

        while(!S.isEmpty())
        {
            item = S.pop();
            cout << S.getVP(item);
        }

    cout << endl;
}