stackli.c

来自「数据结构与算法分析(C语言描述)的源代码 里面的代码的质量非常高」· C语言 代码 · 共 96 行

C
96
字号
        #include "stackli.h"        #include "fatal.h"        #include <stdlib.h>        struct Node        {            ElementType Element;            PtrToNode   Next;        };/* START: fig3_40.txt */        int        IsEmpty( Stack S )        {            return S->Next == NULL;        }/* END *//* START: fig3_41.txt */        Stack        CreateStack( void )        {            Stack S;            S = malloc( sizeof( struct Node ) );            if( S == NULL )                FatalError( "Out of space!!!" );            S->Next = NULL;            MakeEmpty( S );            return S;        }        void        MakeEmpty( Stack S )        {            if( S == NULL )                Error( "Must use CreateStack first" );            else                while( !IsEmpty( S ) )                    Pop( S );        }/* END */        void        DisposeStack( Stack S )        {            MakeEmpty( S );            free( S );        }/* START: fig3_42.txt */        void        Push( ElementType X, Stack S )        {            PtrToNode TmpCell;            TmpCell = malloc( sizeof( struct Node ) );            if( TmpCell == NULL )                FatalError( "Out of space!!!" );            else            {                TmpCell->Element = X;                TmpCell->Next = S->Next;                S->Next = TmpCell;            }        }/* END *//* START: fig3_43.txt */        ElementType        Top( Stack S )        {            if( !IsEmpty( S ) )                return S->Next->Element;            Error( "Empty stack" );            return 0;  /* Return value used to avoid warning */        }/* END *//* START: fig3_44.txt */        void        Pop( Stack S )        {            PtrToNode FirstCell;            if( IsEmpty( S ) )                Error( "Empty stack" );            else            {                FirstCell = S->Next;                S->Next = S->Next->Next;                free( FirstCell );            }        }/* END */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?