注册 登录
编程论坛 C++教室

4. push与pop

ljp294777643 发布于 2020-11-01 18:13, 1939 次点击
4. push与pop
【问题描述】
输入n(1<n<20)个数字,将这n个数字按照输入顺序倒序输出。(使用自定义的入栈和出栈函
数)
【输入格式】
 共两行,第一行包含一个正整数n,第二行包含n个正整数。
【输出格式】
 一行,包含n个正整数。
【输入样例】
5
1 2 3 4 5
【输出样例】
5 4 3 2 1
(看题目,用c++)
1 回复
#2
rjsp2020-11-01 21:22
确定是“函数”,而非“成员函数”?

程序代码:
#include <iostream>
using namespace std;

struct mystack
{
    unsigned buf[20];
    unsigned size = 0;
};

bool push( mystack& s, unsigned value )
{
    if( s.size == sizeof(s.buf)/sizeof(*s.buf) )
        return false;

    s.buf[s.size++] = value;
    return true;
}

bool pop( mystack& s, unsigned& value )
{
    if( s.size == 0 )
        return false;

    value = s.buf[--s.size];
    return true;
}

int main( void )
{
    unsigned n;
    cin >> n;

    mystack s;
    for( unsigned i=0; i!=n; ++i )
    {
        unsigned value;
        cin >> value;

        push( s, value );
    }

    for( unsigned value; pop(s,value); )
    {
        cout << value << ' ';
    }
}
1