栈是先进后出的。如果我们把一些元素(在这里况且设为Q)放入栈,然后不停地出栈,直到栈空了为止。出来的顺序一定是反的。
所以呢?可以利用本性质来进行解决。
第一步:定义“栈”这种数据类型(我是用C语言实现的,C++中有stack,可以少打几行代码)
typedef struct stack
{
int data[10];
int top;
}REVSTACK;
REVSTACK stack;
第二步:写最基本的栈操作函数:
1.初始化栈。
void init()
{
stack.top = -1;
}
2. 进栈与出栈:
void pushToStack(int pushing)
{
stack.top++;
stack.data[stack.top] = pushing;
}
int popFromStack()
{
int retVal = stack.data[stack.top];
stack.top--;
return retVal;
}
3. 反转:
void reverseByStack()
{
for (int i = 0;i < 10;++i)
{
pushToStack(array[i]);
}
memset(array,0,sizeof(array));
for (int i = 0;i < 10;++i)array[i] = popFromStack();
for (int i = 0;i < 10;++i)printf("%d ",array[i]);
}
好了,大功告成。