顺序栈基本算法实现及示例(C语言)

编写一个程序,实现顺序栈的各种基本算法,并在此基础上设计一个程序完成如下功能:
(1)初始化栈s;
(2)判断栈s是否为空;
(3)依次进栈的元素a,b,c,d,e;
(4)判断栈s是否为空;
(5)输出出栈序列;
(6)判断栈s是否为空;
(7)释放栈;

#include
#include
#define Maxsize 100
typedef char ElemType;
typedef struct
{ ElemType data[Maxsize];
 int top;//栈顶指针 
}SqStack;
void InitStack(SqStack *&s)//初始化栈s 
{
 s=(SqStack*)malloc(sizeof(SqStack));
 s->top=-1;//栈顶指针初始值为-1 
}
void DestroyStack(SqStack *&s)//销毁栈s 
{
 free(s);
}
bool StackEmpty(SqStack *s)//判断栈s是否为空 
{
 return(s->top==-1);
}
bool Puch(SqStack *&s,ElemType e)//进栈 
{
 if(s->top==Maxsize-1)//栈满的情况 
  return false;
 else
  s->top++;//栈顶指针加一 
  s->data[s->top]=e;//把元素e放到栈顶指针处 
 return true;
}
bool Pop(SqStack *&s,ElemType &e)//出栈 
{
 if(s->top==-1)//栈为空时候的情况 
  return false;
 else
  e=s->data[s->top];
 s->top--;
 return true;
} 
bool GetTop(SqStack *&s,ElemType &e)//取栈顶元素 
{
 if(s->top==-1)//栈为空的情况 
  return false;
 else
  e=s->data[s->top];
 return true;
}
int main()
{
 ElemType e;
 SqStack *s;
 printf("栈S的基本运算如下:\n");
 printf("(1)初始化栈s\n");
 InitStack(s);
 printf("(2)栈为%s\n",(StackEmpty(s)?"空":"非空"));
 printf("(3)依次进栈元素a,b,c,d,e\n");
 Puch(s,'a');
 Puch(s,'b');
 Puch(s,'c');
 Puch(s,'d');
 Puch(s,'e');
 printf("(4)栈为%s\n",(StackEmpty(s)?"空":"非空"));
 printf("(5)出栈序列;");
 while(!StackEmpty(s))
  {
   Pop(s,e);
   printf("%c",e);
  } 
 printf("\n");
 printf("(6)栈为%s\n",(StackEmpty (s)?"空":"非空"));
 printf("(7)释放栈\n") ;
 DestroyStack(s);
 return 0; 
}

程序运行结果如下:
顺序栈基本算法实现及示例(C语言)_第1张图片

你可能感兴趣的:(顺序栈基本算法实现及示例(C语言))