typedef struct MinStack
{
int data;
int min;
struct MinStack* next;
} MinStack;
/** initialize your data structure here. */
MinStack* minStackCreate()
{
struct MinStack* obj = (struct MinStack*)malloc(sizeof(struct MinStack));
obj->next = NULL;
obj->min = 0;
return obj;
}
void minStackPush(MinStack* obj, int x)
{
struct MinStack* tem1 = (struct MinStack*)malloc(sizeof(struct MinStack));
struct MinStack* tem5 = (struct MinStack*)malloc(sizeof(struct MinStack));
tem1->data = x;
tem1->next = obj->next;
if(obj->min == 0)
{
tem1->min = x;
obj->min = 1;
}
else
{
tem5 = obj->next;
if(tem5->min < x)
{
tem1->min = tem5->min;
}
else
{
tem1->min = x;
}
}
obj->next = tem1;
}
void minStackPop(MinStack* obj)
{
struct MinStack* tem2 = (struct MinStack*)malloc(sizeof(struct MinStack));
tem2 = obj->next;
obj->next = tem2->next;
free(tem2);
if(obj->next == NULL)
{
obj->min = 0;
}
}
int minStackTop(MinStack* obj)
{
struct MinStack* tem3 = (struct MinStack*)malloc(sizeof(struct MinStack));
int q;
tem3 = obj->next;
q = tem3->data;
return q;
}
int minStackMin(MinStack* obj)
{
struct MinStack* tem4 = (struct MinStack*)malloc(sizeof(struct MinStack));
int p;
tem4 = obj->next;
p = tem4->min;
return p;
}
void minStackFree(MinStack* obj)
{
free(obj);
}
/**
* Your MinStack struct will be instantiated and called as such:
* MinStack* obj = minStackCreate();
* minStackPush(obj, x);
* minStackPop(obj);
* int param_3 = minStackTop(obj);
* int param_4 = minStackMin(obj);
* minStackFree(obj);
*/
包含min函数的栈
最新推荐文章于 2022-09-23 20:58:59 发布