此处解法为,构造结构体时增加一个min。这个方法可以作为一种思路,在以后应该也会用的上,改造结构体。代码附上,另外,有一个问题,若要取一个int最大的值,不能一直999999999999999999,int最大值是有规定的,是2147483647。
typedef struct StackNode{
int data;
int min;
struct StackNode*next;
} MinStack;
/** initialize your data structure here. */
int max=2147483647;
MinStack* minStackCreate() {
MinStackobj=(MinStack)malloc(sizeof(MinStack));
obj->min=max;
obj->next=NULL;
return obj;
}
void minStackPush(MinStack* obj, int x) {
MinStacktemp=obj->next;
obj->next=(MinStack)malloc(sizeof(MinStack));
obj->next->data=x;
obj->next->next=temp;
if(xmin) obj->min=obj->next->min=x;
else obj->next->min=obj->min;
}
void minStackPop(MinStack* obj) {
if(!obj->next) return;
else if(!obj->next->next)
{
MinStackP=obj->next;
obj->next=NULL;
obj->min=max;
free§;
}
else
{
MinStackP=obj->next;
obj->next=obj->next->next;
obj->min=obj->next->min;
free§;
}
}
int minStackTop(MinStack* obj) {
return obj->next->data;
}
int minStackGetMin(MinStack* obj) {
return obj->min;
}
void minStackFree(MinStack* obj) {
while(obj->next)
{
MinStack*P=obj->next;
obj->next=P->next;
free§;
}
}