struct node
{
int val;
struct node* next;
};
typedef struct {
struct node* top;
struct node* min_stack_top;
} MinStack;
MinStack* minStackCreate()
{
MinStack* obj = malloc(sizeof(MinStack));
obj->top = obj->min_stack_top = NULL;
return obj;
}
void minStackPush(MinStack* obj, int val)
{
struct node* new_node1 = malloc(sizeof(struct node));
struct node* new_node2 = malloc(sizeof(struct node));
new_node1->val = val;
new_node1->next = obj->top;
obj->top = new_node1;
if (obj->min_stack_top==NULL|| val < obj->min_stack_top->val)
{
new_node2->val = val;
}
else
{
new_node2->val = obj->min_stack_top->val;
}
new_node2->next = obj->min_stack_top;
obj->min_stack_top = new_node2;
}
void minStackPop(MinStack* obj)
{
struct node* old_top1 = obj->top;
struct node* old_top2 = obj->min_stack_top;
obj->top = old_top1->next;
obj->min_stack_top = old_top2->next;
free(old_top1);
free(old_top2);
}
int minStackTop(MinStack* obj)
{
return obj->top->val;
}
int minStackGetMin(MinStack* obj)
{
return obj->min_stack_top->val;
}
void minStackFree(MinStack* obj)
{
while (obj->top!=NULL)
{
minStackPop(obj);
}
free(obj);
}
155. 最小栈
于 2022-01-25 15:22:54 首次发布