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 }
  • 相关阅读:
    MongoDB的固定集合
    MongoDB的导入导出
    MongoDB的数据备份与恢复
    MongoDB的索引
    MongoDB简单CRUD场景
    MongoDB入门
    NOSQL概念入门
    Java静态代理和动态代理
    a=a+1背后的内存模型和CPU高速缓存
    SpringCloud的学习记录(6)
  • 原文地址:https://www.cnblogs.com/kevinGaoblog/p/2431904.html
Copyright © 2011-2022 走看看