1、顺序栈
代码:
#include <iostream>
typedef struct Sqstack {
int* data;
int nmber; //记录元素个数
int top; //栈顶游标
}sqstack;
sqstack* createStack(int mynmber) {
sqstack* stack;
stack =(sqstack*) malloc(sizeof(sqstack));
if (stack == NULL) {
return NULL;
}
stack->data = (int*)calloc(mynmber, sizeof(int)); //记得给数组分配空间大小
if (stack->data == NULL) {
return NULL;
}
stack->top = -1;
stack->nmber = mynmber;
return stack;
}
int PushStack(sqstack* stack, int mydata) { //入栈
if (stack == NULL) { return NULL; }
if (stack->top == stack->nmber - 1) { return -1; }
stack->data[++stack->top] = mydata;
return 0;
}
int GetStack(sqstack* stack, int* mydata) { //打印栈顶元素
if (stack == NULL) { return NULL; }
if (stack->top == -1) { return -1; }
*mydata = stack->data[stack->top];
return 0;
}
int PopStack(sqstack* stack) { //出栈
if (stack == NULL) { return NULL; }
if (stack->top == -1) { return -1; }
stack->top--;
return 0;
}
int main()
{
int a=0;
sqstack* stack = createStack(5);
PushStack(stack,1);
PushStack(stack,2);
PushStack(stack,3);
PushStack(stack,4);
PushStack(stack,5);
PopStack(stack);
PopStack(stack);
GetStack(stack, &a);
printf("%d", a);
}