文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>泛型堆栈的c实现...

泛型堆栈的c实现...

时间:2010-08-12  来源:dingyuanpu

f_stack.h:

#include <assert.h>

 

#define  GENERIC_STACK( STACK_TYPE, SUFFIX, STACK_SIZE )    \

                                                                                                         \

         static STACK_TYPE  stack##SUFFIX[ STACK_SIZE ];    \

         static int         top_element##SUFFIX = -1;       \

                                                            \

         int is_empty##SUFFIX( void )                       \

         {                                                  \

             return top_element##SUFFIX == -1;              \

         }                                                  \

                                                            \

         int is_full##SUFFIX( void )                        \

         {                                                  \

             return top_element##SUFFIX == STACK_SIZE-1;    \

         }                                                  \

                                                            \

         void push##SUFFIX( STACK_TYPE value )              \

         {                                                  \

              assert( !is_full##SUFFIX() );                 \

              top_element##SUFFIX += 1;                     \

              stack##SUFFIX[ top_element##SUFFIX ] = value; \

         }                                                  \

                                                            \

         void pop##SUFFIX( void )                           \

         {                                                  \

              assert( !is_empty##SUFFIX() );                \

              top_element##SUFFIX -= 1;                     \

         }                                                  \

                                                            \

         STACK_TYPE top##SUFFIX( void )                     \

         {                                                  \

              assert( !is_empty##SUFFIX() );                \

              return stack##SUFFIX[ top_element## SUFFIX ]; \

         }

 

test.c:

#include <stdio.h>

#include "f_stack.h"

 

GENERIC_STACK( int, _int, 10 )

GENERIC_STACK( float, _float, 5 )

 

int main()

{

    push_int( 5 );

    push_int( 22 );

    push_int( 15 );

 

    push_float( 25.3 );

    push_float( -40.5 );

 

    while( !is_empty_int() )

    {

        printf("Popping %d\n", top_int());

        pop_int();

    }

 

       printf("\n");

 

    while( !is_empty_float() )

    {

              printf("Popping %f\n", top_float());

        pop_float();

    }

 

    return 0;

}

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载