本博客介绍一种我们做OJ题目或ACM题目的时候经常会碰到的一些需要动态输入数据的方法,然而通常这种OJ题目智能包含标准输入输出库头文件,很多函数都要我们自己编写。本博客提供了一种数据动态输入方法,代码如下:
#include<iostream>
using namespace std;
const int stack_max = 10;
class stack
{
int top;
public:
//定义为共有的可以实现向量般数组操作
int num[stack_max];
int getTop()
{
return top;
}
void init(void)
{
top = 0;
}
//压栈 int 类型数据
void push(int x)
{
if(top == stack_max)
{
cout<<"The stack is full!\n";
return ;
}
num[top] = x;
top++;
}
//出栈
int pop(void)
{
top--;
if(top<0)
{
cout<<"The stack is underflow!\n";
return 0;
}
return num[top];
}
//查找元素下标
int getIndexByElem(int data)
{
int i ;
for(i = 0;i<top;i++)
{
if(num[i] == data)
{
return i;
break;
}
}
if(i == (top-1))
return -1;
}
};
int main()
{
stack a;
a.init();
int j = 1;
for(int i = 0;i<8;i++)
{
a.push(j);
j *= 2;
}
int k = a.getTop();
for(int i = 0;i<k;i++)
{
cout<<a.num[i]<<' ';
}
cout<<endl;
cout<<"4 "<<a.getIndexByElem(16)<<endl;
}