zoukankan      html  css  js  c++  java
  • C语言实现堆栈(自己的)

    stack.h
    #ifndef __STACK_H__
    #define __STACK_H__
    
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    
    typedef int ElementType;
    
    struct SNode {
        ElementType *Data; /* 存储元素的数组 */
        int Top;      /* 栈顶指针 */
        int MaxSize;       /* 堆栈最大容量 */
    };
    typedef struct SNode *Stack;
    
    
    Stack CreateStack( int MaxSize );          //建立结构体堆栈
    bool IsFull( Stack S );                    //判断堆栈是是否溢出
    bool Push( Stack S, ElementType X );       //压栈
    bool IsEmpty( Stack S );                   //判断堆栈是是否为空
    ElementType Pop( Stack S );                //出栈
    
    
    
    #endif 
    
    
    stack.c
    #include "stack.h"
    #include "sys.h"
    
    u8 Choose_Stack_Flag=0;  //未检测到加减符号时候,0:一个结构体,检测到1:另一个结构体
    
    Stack CreateStack( int MaxSize )
    {
        Stack S = (Stack)malloc(sizeof(struct SNode));
        S->Data = (ElementType *)malloc(MaxSize * sizeof(ElementType));
        S->Top = -1;
        S->MaxSize = MaxSize;
        return S;
    }
    
    
     
    bool IsFull( Stack S )
    {
        return (S->Top == S->MaxSize-1);
    }
     
    bool Push( Stack S, ElementType X )
    {
        if ( IsFull(S) ) {
            printf("堆栈满");
            return false;
        }
        else {
            S->Data[++(S->Top)] = X;
            return true;
        }
    }
     
    bool IsEmpty( Stack S )
    {
        return (S->Top == -1);
    }
     
    ElementType Pop( Stack S )
    {
        if ( IsEmpty(S) ) {
            printf("堆栈空");
            return ERROR; /* ERROR是ElementType的特殊值,标志错误   ERROR 0   */ 
        }
        else 
            return ( S->Data[(S->Top)--] );
    }
    
    
    
     
     
  • 相关阅读:
    HDU 1540 Tunnel Warfare (线段树区间合并)
    P2258 子矩阵
    P5021 赛道修建
    P4084 [USACO17DEC]Barn Painting
    P3914 染色计数
    比赛用模板
    P3594 [POI2015]WIL-Wilcze doły
    P5022 旅行
    P3952 时间复杂度
    P3960 列队
  • 原文地址:https://www.cnblogs.com/since1996/p/13530484.html
Copyright © 2011-2022 走看看