最小栈解法2

此处解法为,构造结构体时增加一个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
{
MinStack
P=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§;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值