顺序栈的操作

堆栈的顺序表示操作
堆栈是一种限定在同一端进行插入和删除操作的线性结构
允许执行插入和删除的这一 端称为栈顶(top),另一端为栈底
堆栈有两种存储结构,顺序栈和链式栈
以下为顺序栈的操作代码

#include <stdio.h>  
#include <stdlib.h>  
  
//堆栈的定义  
typedef int ElemType;  
typedef struct stack  
{  
   int top;  
   int maxSize;  
    ElemType *element;  
 } Stack;  
  
//堆栈的初始化  
void Create(Stack *S,int mSize)  
{  
    S->maxSize = mSize;  
    S->top = -1;  
    S->element = (ElemType *)malloc(sizeof(ElemType)*mSize);  
}   
int IsEmpty(Stack *S)  
{  
    return S->top==-1;  
}  
int IsFull(Stack *S)  
{  
    return S->top==S->maxSize-1;  
}  
//获取栈顶元素   
int Top(Stack *S,ElemType *x)  
{  
    if(IsEmpty(S))  
        return 0;  
    *x = S->element[S->top];  
    return 1;  
}  
//栈顶元素的插入   
int Push(Stack *S,ElemType x)  
{  
    if(IsFull(S))  
        return 0;  
    S->top++;  
    S->element[S->top]=x;  
    return 1;   
}  
 //栈顶元素的删除  
int Pop(Stack *S)  
{  
    if(IsEmpty(S))  
        return 0;  
    S->top--;  
    return 1;  
}  
//清除堆栈元素  
void Clear(Stack *S)  
{  
    S->top=-1;  
 }   
//顺序表的输出  
int Output(Stack S)  
{  
    if(S.top==-1)  
        return 0;  
    while(S.top>-1)  
    {  
        printf("%d ",S.element[S.top]);  
        S.top--;      
    }  
    printf("\n");  
    return 1;  
}  
 //堆栈的撤销  
void Destroy(Stack *S)  
{  
    S->top = -1;  
    S->maxSize = 0;  
    free(S->element);  
}  
  
int main(void)  
{  
    Stack s;  
    Create(&s,5);  
    Push(&s,1);  
    Push(&s,2);  
    Push(&s,3);  
    Output(s);  
    Push(&s,4);  
    Output(s);  
    Destroy(&s);  
    return 0;  
}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值