实现具有getMin功能的栈
#include "stack.h" #include <stdlib.h> #include <stdio.h> Stack SMin, SData; int PUSH(int *_d) { int temp = 0; PushStack(&SData, _d); if(EmptyStack(&SMin) == 0) PushStack(&SMin, _d); else { GetTopStack(&SMin, &temp); if(*_d < temp) PushStack(&SMin, _d); } } int POP(int *_d) { int temp = 0; PopStack(&SData, _d); GetTopStack(&SMin, &temp); if(*_d == temp) PopStack(&SMin, &temp); } int getMin(int *_d) { GetTopStack(&SMin, _d); } int main(void) { int i=10, j=20, k=30, temp=0; InitStack(&SData); InitStack(&SMin); PUSH(&i); PUSH(&j); PUSH(&k); getMin(&temp); printf("%d \n", temp); exit(0); }