/* 结构体内部声明结构指针要用如下方式*/
typedef struct MinStack{
int data;
int min;
struct MinStack *next;
}MinStack;
/** initialize your data structure here. */
MinStack* minStackCreate() {
/*要先进行格式转换,再将next指向空,否则next可能不为空*/
MinStack* minstack = (MinStack*)malloc(sizeof( MinStack));
minstack->next = NULL;
return minstack;
}
void minStackPush( MinStack* obj, int x) {
MinStack* minstack = (MinStack*)malloc(sizeof( MinStack));
minstack->next = NULL;
if(obj->next == NULL){
minstack->data = x;
minstack->min = x;
obj->next = minstack;
}else{
minstack->data = x;
if(obj->next->min<x){
minstack->min = obj->next->min;
}else{
minstack->min = x;
}
minstack->next = obj->next;
obj->next = minstack;
}
}
void minStackPop( MinStack* obj) {
MinStack* minstack;
minstack = obj->next;
obj->next = obj->next->next;
free(minstack);
}
int minStackTop( MinStack* obj) {
return obj->next->data;
}
int minStackMin( MinStack* obj) {
return obj->next->min;
}
void minStackFree( MinStack* obj) {
MinStack* first;
first = obj->next;
while(first!=NULL){
obj = first;
first = obj->next;
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);
*/
C语言利用结构链表实现栈的方法(结合leetcode 1901题)
最新推荐文章于 2024-05-08 22:51:43 发布