zoukankan      html  css  js  c++  java
  • 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)

    1.  1 #define STACK_LEN 50  
       2 
       3 typedef struct  
       4 {  
       5      int     data;  
       6 
       7      int     min;  
       8 } StackItem;  
       9 
      10 typedef struct  
      11 {  
      12      StackItem      data[ STACK_LEN ];  
      13      int   top;  
      14 } Stack;  
      15 
      16 void push( stack *S, int val )  
      17 { 
      18      S->data[ S->top ].data = val;  
      19      if ( ( S->top )> 0 )  // 保证栈顶元素中的min始终为当前栈中最小值
      20      {  
      21            if ( val < ( S->data[ S->top - 1 ].min ) ) // 如果当前push进的元素小于栈中最小元素值  
      22                 S->data[ S->top ].min = val;   // 把当前元素置为栈中最小元素值 
      23            else // 否则,不更新  
      24                 S->data[ S->top ].min = S->data[ S->top - 1 ].min;   
      25      } 
      26      else  
      27            S->data[ S->top ].min = val;  
      28 
      29     S->top++; 
      30 
      31 }  
      32 
      33 int pop( stack *S )  
      34 {  
      35      return S->data[ S->top-- ].data;  
      36 }  
      37   
      38 int min( stack *S )  
      39 {  
      40      return S->data[ S->top ].min;  
      41 }
  • 相关阅读:
    php1
    c# out参数
    c#冒泡算法
    c#方法 最大值我最小值
    方法
    OUT参数
    芮年
    PHP博客
    数组习题
    从郑和下西洋 到华人爱燕窝
  • 原文地址:https://www.cnblogs.com/kevinGaoblog/p/2431904.html
Copyright © 2011-2022 走看看