顺序栈的初始化,建立,插入,查找,删除

////////////////////////////////////////////
//顺序栈的初始化,建立,插入,查找,删除。      //
//Author:Wang Yong          // 
//Date: 2010.8.19          //
////////////////////////////////////////////


#include <stdio.h>
#include <stdlib.h>

#define  MAX 100      //定义最大栈容量

typedef int ElemType;

///////////////////////////////////////////

//定义栈类型
typedef struct
{
 ElemType data[MAX];
 int top;
}SeqStack;

///////////////////////////////////////////

//栈的初始化

SeqStack SeqStackInit()
{
 SeqStack s;
 s.top = -1;
 return s;
}

///////////////////////////////////////////

//判断栈空的算法

int SeqStackIsEmpty(SeqStack s)
{
 if(s.top == -1)
  return 0;
 else
  return 1;
}

///////////////////////////////////////////

//进栈的算法

void SeqStackPush(SeqStack &s,ElemType x)
{
 if(s.top == MAX-1)    //进栈的时候必须判断是否栈满
  printf("stack full/n");
 s.top++;
 s.data[s.top] = x;
}

//////////////////////////////////////////

//出栈的算法

ElemType SeqStackPop(SeqStack &s)
{
 if(s.top == -1)    //出栈的时候必须判断是否栈空
  printf("stack empty/n");
 ElemType x;
 x = s.data[s.top];
 s.top--;
 return x;
}

//////////////////////////////////////
int main()
{
 SeqStack  stack;
 stack = SeqStackInit();
 printf("请输入进栈的元素:");
 ElemType x;
 while(scanf("%d",&x) != -1)
 {
  SeqStackPush(stack,x); 
 }
 printf("出栈的结果:");
 while(stack.top != -1)
 {
  printf("%d ",SeqStackPop(stack));
 }
 printf("/n");
 return 0;
}

原文地址:https://www.cnblogs.com/byfei/p/3112212.html