结构体定义部分及头文件

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

#define MAXSIZE 100
    
typedef int ElemType;
typedef struct {
    ElemType data[MAXSIZE];
    int top;
} SeqStack;

函数名称:InitStack

函数参数:SeqStack *S传入地址(引用类型)

函数功能:初始化栈,给栈顶指针赋值,构造空栈

函数返回值:无

void InitStack(SeqStack *S) {
    S->top=-1;
}

函数名称:Push

函数参数:SeqStack *S传入地址(引用类型) ElemType e整型数据

函数功能:进栈操作

函数返回值:无

void Push(SeqStack *S,ElemType e) {
    if(S->top<MAXSIZE-1) {
        S->top++;
        S->data[S->top]=e;
    } else
        printf("SeqStack full!");
}

函数名称:Pop

函数参数:SeqStack *S传入地址(引用类型)

函数功能:出栈操作

函数返回值:ElemType(int),返回出栈的整型数据

ElemType Pop(SeqStack *S) {
    int x;
    if(S->top==-1)
        printf("SeqStack empty!");
    else {
        x=S->data[S->top];
        S->top--;
    }
    return x;
}

函数名称:GetTop

函数参数:SeqStack *S传入地址(引用类型)

函数功能:得到栈顶元素

函数返回值:ElemType(int),返回出栈的整型数据

ElemType GetPop(SeqStack *S) {
    int x;
    return x=S->data[S->top];
}

主函数

int main() {
    SeqStack S;
    while(1) {
        printf("\n");
        int choose1,e;
        printf("Enter your choose!\n");
        printf("********************\n");
        printf("1.初始化栈**********\n");
        printf("2.进栈**************\n");
        printf("3.出栈**************\n");
        printf("4.得到栈顶元素**************\n");
        scanf("%d",&choose1);
        switch(choose1) {
            case 1:
                InitStack(&S);
                break;
            case 2:
                printf("please enter e:");
                scanf("%d",&e);
                Push(&S,e);
                break;
            case 3:
                e=Pop(&S);
                printf("Pop elem is:%d",e);
                break;
            case 4:
                e=Pop(&S);
                printf("GetPop elem is:%d",e);
                break;
            default:
                printf("Error!");
        }
        printf("\n");
    }
    return 0;
}