zoukankan      html  css  js  c++  java
  • 【数据结构】堆栈的基本操作

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

    堆栈的基本操作:

    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 }
  • 相关阅读:
    栅栏与自由
    如何种玉米和黄豆
    除了CRUD也要注意IO
    奶糖测试
    看你知道不知道VB6的模块之间循环关系
    [zz]C++类模板
    [zz]C++中std::tr1::function和bind 组件的使用
    [zz]c/c++一些库
    [zz] Python性能鸡汤
    [zz]Linux 下 socket 编程示例
  • 原文地址:https://www.cnblogs.com/utank/p/12530624.html
Copyright © 2011-2022 走看看