zoukankan      html  css  js  c++  java
  • 栈ADT的链表实现

    /* 栈ADT链表实现的类型声明 */
    struct Node;
    typedef struct Ndoe *PtrToNode;
    typedef PtrToNode Stack;
    
    struct Node{
        ElementType Element;
        Stack Next;
    };
    
    /* 测试是否为空栈 */
    int
    IsEmpty( Stack S )
    {
        return S->Next == NULL;
    }
    /* 创建空栈 */
    Stack
    CreateStack(void)
    {
        Stack S;
    
        S = malloc(sizeof(struct Node));
        if(S == NULL)
            FatalError("no space");
        S->Next = NULL;
        return S;
    }
    /* 清空栈 */
    /* 直接删除链表与无数次Pop异曲同工 */
    void
    MakeEmpty( Stack S)
    {
        Stack p,TmpCell;
        p = S->Next;
        S->Next = NULL;
        while(p != NULL )
        {
            TmpCell = p->Next;
            free(p);
            p = TmpCell;
        }
    }
    /* 书上的实现方法 */
    void
    MakeEmpty( Stack S )
    {
        if(S == NULL)
            Error("Must create a stack");
        else
        {
            while(!IsEmpty(S))
                Pop(S);
        }
    }
    /* Pop 例程 */
    void
    Pop( Stack S )
    {
        PtrToNode FirstCell;
        FirstCelll = S->Next;
        S->Next = FirstCell->Next;
        free(FirstCell);
    }
    /* Push 进栈操作 */
    void
    Push( Stack S, ElementType X )
    {
        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;
        }
    }
    /* 返回栈顶元素 */
    ElementType
    Top( Stack S )
    {
        if( IsEmpty( S ) )
            Fata
    }
    View Code
  • 相关阅读:
    2017蓝桥杯最大公共子串(C++B组)
    C++ memset函数用法
    2017蓝桥杯取位数(C++B组)
    2017蓝桥杯承压计算(C++ B组)
    安卓动画(Animation使用)
    2017蓝桥杯等差素数(C++B组)
    JSON取值前判断
    jstl
    centos到底下载哪个版本?
    HTML页面定时跳转方法
  • 原文地址:https://www.cnblogs.com/gabygoole/p/4608979.html
Copyright © 2011-2022 走看看