数据结构中的顺序栈的进栈和出栈问题
发布网友
发布时间:2022-04-29 10:36
我来回答
共2个回答
热心网友
时间:2022-06-26 07:36
#include <stdio.h>
#define StackSize 100
typedef char DataType;
typedef struct
{ DataType data[StackSize];
int top;
}SeqStack;
//下面是算法
void InitStack(SeqStack *S)
{
S->top=-1;
}
int StackEmpty(SeqStack *S)
{
return S->top==-1;
}
int StackFull(SeqStack *S)
{
return S->top==StackSize-1;
}
void Push(SeqStack *S,DataType x)
{ if (StackFull(S))
{ printf("Stack overflow");
exit(0); }
S->data[++S->top]=x; }
DataType Pop(SeqStack *S)
{ if (StackEmpty(S))
{ printf("Stack underflow");
exit(0);
}
return S->data[S->top--];
}
int main(void)
{
SeqStack ss;
int i;
InitStack(&ss);
for(i=0;i<26 ;i++ )
{
Push(&ss,'A'+i);
}
while(i--)
printf("%c\t",Pop(&ss));
return 0;
}
热心网友
时间:2022-06-26 07:36
主要就是Push函数和Pop函数的调用。
首先定义一个SeqStack *类型的指针并分配内存,用InitStack初始化。
然后两个循环,一个压栈,一个出栈,出栈的时候用函数StackEmpty判断栈是否为空,打印出Pop函数的返回值即可。