本题目要求利用栈的基本操作,实现一个清空顺序栈S的算法。 #include <stdio.h> #include <math.h> #include <stdlib.h> typedef int DataType; /*栈中允许存储的元素的最大个数*/ #define STACKSIZE 100 /* 顺序栈的定义 */ typedef struct
时间: 2023-09-13 10:10:25 浏览: 231
{
DataType data[STACKSIZE]; // 存储栈的元素
int top; // 栈顶指针,指向栈顶元素在data数组中的下标
} SeqStack;
/* 初始化栈 */
void InitStack(SeqStack *S)
{
S->top = -1; // 栈顶指针初始化为-1,表示栈为空
}
/* 判断栈是否为空 */
int StackEmpty(SeqStack S)
{
return (S.top == -1);
}
/* 判断栈是否已满 */
int StackFull(SeqStack S)
{
return (S.top == STACKSIZE - 1);
}
/* 进栈 */
int Push(SeqStack *S, DataType x)
{
if (StackFull(*S)) // 栈已满,不能再进栈
{
return 0;
}
else
{
S->top++; // 栈顶指针加1
S->data[S->top] = x; // 将x存入栈顶元素
return 1;
}
}
/* 出栈 */
int Pop(SeqStack *S, DataType *x)
{
if (StackEmpty(*S)) // 栈为空,不能出栈
{
return 0;
}
else
{
*x = S->data[S->top]; // 将栈顶元素出栈
S->top--; // 栈顶指针减1
return 1;
}
}
/* 清空栈 */
void ClearStack(SeqStack *S)
{
S->top = -1; // 直接将栈顶指针置为-1,表示栈为空
}
阅读全文