堆栈的实现

在这里插入图片描述

数组实现堆栈
typedef int Position;
struct SNode {
    ElementType *Data; /* 存储元素的数组 */
    Position Top;      /* 栈顶指针 */
    int MaxSize;       /* 堆栈最大容量 */
};
typedef struct SNode *Stack;
typedef int bool;
#define TRUE 1
#define FALSE 0
#define ERROR -1
#define MAXSIZE 1000
/*初始化*/
Stack CreateStack( int MaxSize )
{
    Stack s =(Stack)malloc(sizeof(struct SNode));
    s->Data = (ElementType *)malloc(MaxSize*sizeof(ElementType));
    s->Top = -1;
    s->MaxSize = MaxSize;
    return s;
}

bool IsFull( Stack S )
{
    return (S->Top ==S->MaxSize-1);
}
bool Push( Stack S, ElementType X )
{
    if(IsFull(S)){
        return FALSE;
    }else{
        S->Data[++S->Top] = X;
        return TRUE;
    }
}

bool IsEmpty( Stack S )
{
     return (S->Top == -1);
}

ElementType Pop( Stack S )
{
     if(IsEmpty(S)){
        return NULL;
    }else{
       return S->Data[S->Top--];

    }
}
链表实现堆栈
typedef struct SNode *PtrToSNode;
struct SNode {
    ElementType Data;
    PtrToSNode Next;
};
typedef PtrToSNode Stack;
typedef int bool;
#define TRUE 1
#define FALSE 0
#define ERROR -1
#define MAXSIZE 1000
/*初始化*/
Stack CreateStack( )
{
    Stack s =(Stack)malloc(sizeof(struct SNode));
    return s;
}
/*不需要判断堆栈是否满,链表可以无线存储*/
bool IsFull( Stack S )
{
    return FALSE;
}
bool Push( Stack S, ElementType X )
{
    PtrToSNode Ptemp;
    Ptemp = (PtrToSNode) malloc(sizeof(struct SNode));
    Ptemp ->Data =X;
    Ptemp ->Next = S->Next;
    S->Next = Ptemp;
    return TRUE;
}

bool IsEmpty( Stack S )
{
     return (S->Next == NULL);
}

ElementType Pop( Stack S )
{
    PtrToSNode p;
    ElementType e;
     if(IsEmpty(S)){
        return NULL;
    }else{
        p = S->Next;
        S->Next = p ->Next;
        e=p ->Data;
        free(p);
        return e;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值