顺序栈学习

来源:互联网 发布:idea新建普通java项目 编辑:程序博客网 时间:2024/06/06 18:01
#include<stdio.h>#include<stdlib.h>#define STACK_SIZE 10typedef int ElemType;typedef struct {    ElemType *top;ElemType *base;    int stacksize;}SqStack;//初始化顺序栈int InitStack(SqStack &S){   S.base=(ElemType *)malloc(STACK_SIZE*sizeof(ElemType));   S.top=S.base;   S.stacksize=STACK_SIZE;   return 0;}//压入元素int PushStack(SqStack &S,ElemType e){   if(S.top-S.base>=S.stacksize)    return -1;   *(S.top)++=e;   return 0;}//得到栈顶元素并删除栈顶元素int PopStack(SqStack &S,ElemType &e){   if(S.top==S.base)    return -1;   e=*--(S.top);   return 0;}//得到栈顶元素int GetStack(SqStack S,ElemType &e){    if(S.top>S.base){        e=*(S.top-1);        return e;    }    else    return 0;}//清空顺序栈int ClearStack(SqStack &S){   S.top=S.base;   return 0;}//判空int EmptyStack(SqStack S){   if(S.top==S.base)     return 1;   else    return 0;}//栈的长度int LengthStack(SqStack S){return S.top-S.base;}int main(){   SqStack S;   int i,e;   InitStack(S);   printf("%d",LengthStack(S));   printf("\n");   for(i=1;i<=5;i++){    PushStack(S,i);   }   for(i=1;i<=LengthStack(S);i++){printf("%d  ",*(S.top-i));   }printf("\n");PopStack(S,e);printf("%d ",e);printf("\n");    for(i=1;i<=LengthStack(S);i++){printf("%d  ",*(S.top-i));   }printf("\n");GetStack(S,e);printf("%d",e);printf("\n");ClearStack(S);printf("%d",EmptyStack(S));  return 0;}

0 0
原创粉丝点击