• 【数据结构】堆栈的基本操作


    堆栈的概念:
    是一组相同类型数据的集合,并且拥有后进先出的特点,所有的操作都在堆栈顶端进行。

    堆栈的基本操作:

    Init 创建一个空堆栈
    Push 把数据压入堆栈顶端
    Pop 从堆栈顶弹出数据
    Top 从栈顶取数据
    Empty 判断堆栈是否为空堆栈,是则返回true,否则返回false
    Full 判断栈是否为满,是则返回true,否则返回false

    用数组实现堆栈:

     1 typedef struct st_stack{
     2     int size;
     3     int *data;
     4     int top;    
     5 }T_Stack;
     6 
     7 int StackInit( T_Stack *ptStack, int *data, int size)
     8 {
     9     ptStack->size = size;
    10     ptStack->data = data;
    11     ptStack->top = 0;
    12 
    13     return 0;
    14 }
    15 
    16 int StackPush( T_Stack *ptStack, int data )
    17 {
    18     if( ptStack->top == ptStack->size )
    19     {
    20         return -1;
    21     }
    22     
    23     ptStack->data[ptStack->top++] = data;
    24 
    25     return 0;
    26 }
    27 
    28 int StackPop( T_Stack *ptStack, int *data )
    29 {
    30     if( ptStack->top == 0 )
    31     {
    32         return -1;
    33     }
    34 
    35     *data = ptStack->data[--ptStack->top];
    36 
    37     return 0;
    38 }
    39 
    40 int StackTop( T_Stack *ptStack, int *data )
    41 {
    42     if( ptStack->top == 0 )
    43     {
    44         return -1;
    45     }
    46 
    47     *data = ptStack->data[ptStack->top - 1];
    48 
    49     return 0;
    50 }
    51 
    52 int StackIsEmpty( T_Stack *ptStack )
    53 {
    54     return ( ptStack->top == 0 );
    55 }
    56 
    57 int StackIsFull( T_Stack *ptStack )
    58 {
    59     return ( ptStack->top == ptStack->size );
    60 }
  • 相关阅读:
    伪造mysql服务端实现任意读取
    客户端session安全问题(flask)
    systemd教程
    MySQL的一些常用基本命令的使用说明
    AMD、CMD、CommonJs和ES6的区别
    for in与for of的区别,以及forEach,map,some,every,filter的区别
    EcmaScript 6 十大常用特性
    单行省略号与多行省略号
    Array.prototype.slice.call()详解及转换数组的方法
    返回顶部
  • 原文地址:https://www.cnblogs.com/utank/p/12530624.html
Copyright © 2020-2023  润新知