顺序栈

来源:互联网 发布:lufylegend.js 编辑:程序博客网 时间:2024/06/08 01:00

//seqstack.h

#include<string.h>#include<malloc.h>#include<limits.h>#include<stdio.h>#include<io.h>#include<math.h>#include<process.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR -1#define INFEASIBLE -1#define MAXSIZE 100typedef int DataType;typedef struct{    DataType data[MAXSIZE];    int top;}SeqStack;void SStackSetNull(SeqStack *s)//初始化置空栈{    s=(SeqStack*)malloc(sizeof(SeqStack));    s->top=-1;}int SStackIsEmpty(SeqStack *s)//判断栈空{    return (s->top<0?TRUE:FALSE);}int SStackPush(SeqStack *s,DataType x)//入栈操作{    if(s->top==MAXSIZE-1)    {        printf("溢出\n");        return FALSE;    }    else    {        s->top=s->top+1;        s->data[s->top]=x;        return TRUE;    }}int SStackPop(SeqStack *s,DataType *x)//出栈操作{    if(s->top==-1)    {        printf("溢出\n");        return FALSE;    }    else    {        *x=s->data[s->top];        s->top--;        return TRUE;    }}DataType SStackGetTop(SeqStack *s)//获得栈顶元素{    if(s->top==-1)    {        printf("溢出\n");        return FALSE;    }    else return (s->data[s->top]);}void SStackPrint(SeqStack *s)//输出栈{    int p;    if(SStackIsEmpty(s)==TRUE)    {        printf("栈空\n");    }    else    {        printf("栈的数据元素如下:\n");        p=s->top;        while(p>=0)        {            printf("%d\n",s->data[p]);            p--;        }        printf("\n\n");    }}int SStackIsFull(SeqStack *s)//判断栈满{    return (s->top==MAXSIZE-1?TRUE:FALSE);}

//main.cpp

#include"seqstack.h"int main(){    DataType x;    SeqStack ss;    int read=0;    do    {        puts("关于顺序栈的操作:\n");        puts("1.置空栈");        puts("2.入栈");        puts("3.出栈");        puts("4.输出");        puts("0.退出");        printf("请选择代号:");        scanf("%d",&read);        printf("\n");        switch(read)        {        case 1:            SStackSetNull(&ss);            break;        case 2:            printf("输入入栈的数据元素:");            scanf("%d",&x);            SStackPush(&ss,x);            break;        case 3:            if(SStackPop(&ss,&x)!=FALSE)                printf("出栈的数据元素是:%d\n",x);            break;        case 4:            SStackPrint(&ss);            break;        }    }while(read!=0);    return 0;}
原创粉丝点击