• #include <stdio.h>  
    #include "stack.h"

    int main(void)
    {
    SqStack st;
    ElemType e;

    InitStack(&st);
    printf("栈%s/n", (StackEmpty(st) == 0 ? "" : "不空"));
    printf("a进栈/n"); Push(&st, 'a');
    printf("b进栈/n"); Push(&st, 'b');
    printf("c进栈/n"); Push(&st, 'c');
    printf("d进栈/n"); Push(&st, 'd');
    printf("栈%s/n", (StackEmpty(st) == 1 ? "" : "不空"));
    GetTop(st, &e);
    printf("栈顶元素:%c/n", e);
    printf("出栈次序:");

    while((StackEmpty(st))) //栈空返回0,否则返回-1
    {
    Pop(&st, &e);
    printf("%c ", e);
    }
    printf("/n");

    return 0;
    }


    [cpp] view plaincopyprint?
    #ifndef STACK
    #define STACK

    #define StackSize 100
    typedef char ElemType;

    typedef struct
    {
    ElemType data[StackSize]; //保存栈中元素
    int top; //栈指针
    }SqStack;

    void InitStack(SqStack *st); //初始化栈

    int Push(SqStack *st, ElemType x); //入栈操作

    int Pop(SqStack *st, ElemType *x); //出栈操作

    int GetTop(SqStack st, ElemType *x); //取栈顶元素

    int StackEmpty(SqStack); //判断栈空操作


    #endif


    [cpp] view plaincopyprint?
    #include <stdio.h>
    #include "stack.h"

    /************************************************
    ** 函数名:void InitStack(SqStack *st)
    ** 功能: 初始化栈
    ** 描述: 无
    ** 作者: 庞辉
    ************************************************
    */

    void InitStack(SqStack *st)
    {
    st->top = -1; //注意思考为什么初始化为-1呢?
    }

    /************************************************
    ** 函数名:int Push(SqStack *st, ElemType x)
    ** 功能: 入栈操作
    ** 描述: 栈满返回-1,成功返回0
    ** 作者: 庞辉
    ************************************************
    */

    int Push(SqStack *st, ElemType x)
    {
    if(StackSize - 1 == st->top) //从0开始计算
    {
    return -1;
    }
    else
    {
    st->top++;
    st->data[st->top] = x;
    return 0;
    }
    }

    /************************************************
    ** 函数名:int Pop(SqStack *st, ElemType *x)
    ** 功能: 出栈操作
    ** 描述: 栈空返回-1,成功返回0
    ** 作者: 庞辉
    ************************************************
    */

    int Pop(SqStack *st, ElemType *x)
    {
    if(-1 == st->top)
    {
    return -1;
    }
    else
    {
    *x = st->data[st->top];
    st->top--;
    return 0;
    }
    }

    /************************************************
    ** 函数名:int GetTop(SqStack st, ElemType *x)
    ** 功能: 取栈顶元素
    ** 描述: 栈空返回-1,成功返回0
    ** 作者: 庞辉
    ************************************************
    */

    int GetTop(SqStack st, ElemType *x)
    {
    if(-1 == st.top)
    {
    return -1;
    }
    else
    {
    *x = st.data[st.top];
    return 0;
    }
    }

    /************************************************
    ** 函数名:int StackEmpty(SqStack st)
    ** 功能: 判断栈空操作
    ** 描述: 栈空返回0,否则返回-1
    ** 作者: 庞辉
    ************************************************
    */

    int StackEmpty(SqStack st)
    {
    if(-1 == st.top)
    {
    return 0;
    }
    else
    {
    return -1;
    }
    }



  • 相关阅读:
    一本通1269 有限背包
    python3 threading.Lock() 多线程锁的使用
    Sqlite3错误:Recursive use of cursors not allowed 的解决方案
    linux 常用命令
    90%的人说Python程序慢,5大神招让你的代码像赛车一样跑起来
    python3 使用flask连接数据库出现“ModuleNotFoundError: No module named 'MySQLdb'”
    Navicat Premium12远程连接MySQL数据库
    pymysql pymysql.err.OperationalError 1045 Access denied最简单解决办法
    CentOS7 安装MySQL8修改密码
    CentOS7 升级Openssl的办法
  • 原文地址:https://www.cnblogs.com/pang123hui/p/2309941.html
Copyright © 2020-2023  润新知