作者: 修夏之夏i | 来源:发表于2018-08-24 15:07 被阅读0次
    栈的概念

    栈是一种特殊的线性表,其只允许在固定一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。

    栈特性:后进先出(LILO)特殊线性表
    栈功能:将数据从一种序列改变到另一种序列。

    stack.png
    栈的基本操作

    stack.h

    #define _CRT_SECURE_N0_WARNINGS 1
    #pragma once
    
    #define  Max_size  100
    #include <stdio.h>
    #include <assert.h>
    
    typedef int StackDataType;
    
    typedef struct Stack{ 
        StackDataType arr[Max_size];
        int top;
    }Stack;
    
    //基本操作
    void StackInit(Stack* pStack)
    {
        pStack->top = 0;
    }
    
    void StackDestory(Stack* pStack)
    {
        pStack->top = 0;
    }
    
    void StackPush(Stack* pStack, StackDataType data)
    {
        //判断栈内是否有空间存放数据
        assert(pStack->top < Max_size);
        //进行压栈
        pStack->arr[pStack->top++] = data;
    }
    
    void StackPop(Stack* pStack)
    {
        //判断栈不为空
        assert(pStack->top < 0);
        //进行出栈
        pStack->top--;
    }
    
    StackDataType StackTop(Stack* pStack)
    {
        //判断栈不为空
        assert(pStack->top < 0);
        //返回栈顶元素
        return pStack->arr[pStack->top-1];
    }
    
    int StackSize(Stack* pStack)
    {
        return pStack->top;
    }
    
    int StackFull(Stack* pStack)
    {
        return pStack->top >= Max_size;
    }
    
    int StackEmpty(Stack* pStack)
    {
        return pStack->top <=0;
    }
    
    //--------------------------------------------
    
    void TestStack()
    {
        Stack stack;
        StackInit(&stack);
        for (int i = 0; i < 10; i++)
        {
            StackPush(&stack, i);
        }
    
        for (int i = 0; i < 10; i++)
            printf("%d ", stack.arr[i]);
    }
    

    main.c

    #define _CRT_SECURE_N0_WARNINGS 1
    
    #include "stack.h"
    
    int main()
    {
        TestStack();
        return 0;
    }
    
    运行结果: stack.png

    相关文章

      网友评论

        本文标题:

        本文链接:https://www.haomeiwen.com/subject/vqgbiftx.html