/*二、栈*/
/*(1)顺序栈*/
/**1.定义*/
typedef int ElementType;
#define MaxSize 50;
typedef struct SqStack
{
ElementType data[MaxSize]; // 栈元素
int top; // 栈顶
} SqStack;
/*2.操作*/
void InitSqStack(SqStack *S)
{
S->top = -1;
}
bool StackEmpty(SqStack *S)
{
if (S->top == -1)
return true;
else
return false;
}
bool StackFull(SqStack *S)
{
if (S->top == (MaxSize - 1))
return true;
else
return false;
}
bool push(SqStack *S, ElementType e)
{
if (StackFull(S))
return false;
else
S->data[++S->top] = e;
printf("%d 入栈\n", e);
return true;
}
bool pop(SqStack *S, ElementType *E)
{
if (StackEmpty(S))
return false;
else
*E = S->data[S->top--];
printf("%d 出栈\n", *E);
return true;
}
ElementType GetTop(SqStack *S)
{
if (StackEmpty(S))
return false;
else
return S->data[S->top];
}
void DestroyStack(SqStack *S)
{
free(S);
}
//测试
int main()
{
SqStack *S = (SqStack *)malloc(sizeof(SqStack));
InitSqStack(S);
int a[] = {1, 2, 3, 4, 5};
for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
{
push(S, a[i]);
}
int E = 0;
pop(S, &E);
printf("%d\n", GetTop(S));
DestroyStack(S);
return 0;
}
一天一个c语言数据结构与算法实现----顺序栈
于 2024-01-06 15:08:00 首次发布