题目要求:定义一个新的栈结构,在该结构中可以获取当前栈内最小值Min,要求在该栈中调用入栈Push,出栈Pop和获取最小值Min的函数的时间复杂度都为O(1)
1.结构体设计
#define MAXSIZE 10
typedef struct MinStack
{
int elem[MAXSIZE];
int min[MAXSIZE];
int top;
}MinStack,*PMinStack;
左边是保存数据的栈,右边是保存最小值的栈,当为空栈时,5直接入栈,当第二个数据(4)入栈时,如果比之前入栈的数据小,就入这个更小的数字,反之,入之前的数字,全部入栈后,右边栈顶元素就是所有元素中的最小值,且获取最小值的时间复杂度为O(1)
2.初始化
//初始化
void InitMinStack(PMinStack ps)
{
assert(ps != NULL);
if(ps == NULL)
return ;
ps->top = 0;
}
初始化测试
//初始化测试
MinStack ms;
InitMinStack(&ms);
printf("程序正常结束\n");