顺序栈的实现

2015-01-27 06:24:58 · 作者: · 浏览: 10

顺序栈的数据结构如下:

typedef struct
{
	ElemType data[MaxSize];    //栈数据 
	int top;                  //栈顶指针
}SqStack;

实现下列函数:

void InitStack(SqStack* &s);    //初始化栈
void DestroyStack(SqStack* &s);  //销毁栈
int StackLength(SqStack* s);  //求栈的长度
int StackEmpty(SqStack* s);  //栈是否为空
int Push(SqStack* &s,ElemType e);  //进栈
int Pop(SqStack* &s,ElemType &e);   //出栈
int GetTop(SqStack* s,ElemType &e); //取栈顶元素
void DispStack(SqStack* s); //输出栈 

具体实现代码:

#include
  
   
#include
   
     #include
    
      #define ElemType int #define MaxSize 1000 #define GET_ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0])) using namespace std; typedef struct { ElemType data[MaxSize]; //栈数据 int top; // }SqStack; void InitStack(SqStack* &s); //初始化栈 void DestroyStack(SqStack* &s); //销毁栈 int StackLength(SqStack* s); //求栈的长度 int StackEmpty(SqStack* s); //栈是否为空 int Push(SqStack* &s,ElemType e); //进栈 int Pop(SqStack* &s,ElemType &e); //出栈 int GetTop(SqStack* s,ElemType &e); //取栈顶元素 void DispStack(SqStack* s); //输出栈 void InitStack(SqStack* &s){ s=(SqStack* )malloc(sizeof(SqStack)); s->top=-1; } void DestroySqStack(SqStack* &s){ free(s); } int StackLength(SqStack* s){ return (s->top+1); } int StackEmpty(SqStack* s){ return (s->top==-1); } void DispStack(SqStack* s){ for(int i=s->top;i>-1;i--) cout<
     
      data[i]<<" "; cout<
      
       top+1==MaxSize)return -1; else{ s->data[s->top+1]=e; s->top++; return 1; } } int Pop(SqStack* &s,ElemType &e){ if(s->top==-1)return -1; else{ e=s->data[s->top]; s->top--; return 1; } } int GetTop(SqStack* s,ElemType &e){ if(s->top==-1)return -1; else { e=s->data[s->top]; return 1; } } int main(){ int i=0; ElemType e; SqStack* s=NULL; ElemType a[]={3,76,4,25,7,8,2,43,212}; InitStack(s); for(int i=0;i
       
        
代码运行 结果如下: