#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100
#define STACK_ADD_ 10//每次栈满之后增加分配的空间大小
typedef struct {
int* base;//栈底
int* top;//指向栈顶元素的下一个位置
int stacksize;
}SqStack;
bool initStack(SqStack &S)
{
S.base = (int*)malloc(STACK_INIT_SIZE * sizeof(int));
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return true;
}
bool getTop(SqStack S,int &elem)
{
if (S.base == S.top)
return false;
elem = *(S.top - 1);//top指针的前一个
return true;
}
bool push(SqStack& S, int elem)
{
if (S.top - S.base >= S.stacksize)
{//栈满,增空间
S.base = (int*)realloc(S.base, (S.stacksize + STACK_ADD_) * sizeof(int));
if (S.base == NULL)//内存分配失败
return false;
S.top = S.base + S.stacksize;
S.stacksize += STACK_ADD_;
}
*S.top = elem;
S.top++;
return true;
}
bool pop(SqStack& S, int& elem)
{
if (S.top == S.base)
return false;
elem = *(S.top - 1);
S.top--;
return true;
}
int main()
{
SqStack S1;
initStack(S1);
push(S1, 1);
int t = 0;
pop(S1, t);
printf("%d", t);
return 0;
}
数据结构(4)_栈的链式存储结构
于 2022-02-13 22:49:04 首次发布