题目描述:对于一个非空栈,请设计一个算法颠倒栈中的元素。
首先我们设计的栈的实现代码是:
/*
* 问题描述:栈实现的基本代码。
* @author : xiaoq-ohmygirl
* @time : 2012-07-03
**/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <math.h>
//栈的初始最大容量
#define STACK_MAX_SIZE 100
//栈的容量增量
#define INCREAMENT 10
//状态函数
#define ERROR 0
#define OK 1
#define SOVERFLOW -1
#define YES 1
#define NO 0
typedef int Status,SElemType,ElemType;
typedef struct{
SElemType *base;
SElemType *top;
int stackSize;//当前已经分配的空间,不是指栈中元素个数。
}sqStack;
Status InitStack(sqStack &S){
//初始化栈空间,栈为空
S.base = (SElemType *)malloc(STACK_MAX_SIZE * sizeof(ElemType));
if(!S.base){
exit(SOVERFLOW);
}
S.top = S.base;
S.stackSize = STACK_MAX_SIZE;
return OK;
}
//如果栈不空,用e传出栈顶元素并返回OK。否则返回错误。
Status