链栈的基本操作

初始化一个数据元素为整形的链栈,并实现进栈、出栈、获得栈顶元素等操作。

通过控制台将1,2,3,4,5进栈,出栈两次,获得栈顶元素并输出,6进栈,打印栈内的所有内容。

#include<iostream>
#include<cstdio>
#define MAXSIZE 100
#define OK 1
#define ERROR 0
using namespace std;

typedef struct StackNode       //链栈的定义
{
    int data;
    struct StackNode *next;
}StackNode,*LinkStack;

int InitStack(LinkStack &S)     //初始化链栈,将栈顶指针置空
{
    S=0;
    return OK;
}

int Push(LinkStack &S, int e)   //入栈,注意此处e不是引用传递
{
    StackNode *p;
    p=new StackNode;
    p->data=e;
    p->next=S;           //将新结点插入栈顶
    S=p;                //修改栈顶指针为p
    return OK;
}

int Pop(LinkStack &S, int &e)   //出栈,此处e为引用传递
{
    StackNode *p;
    if(S==0) return ERROR;
    e=S->data;          //将栈顶元素赋给e
    p=S;                //用p临时保存栈顶,以待删除
    S=S->next;          //修改栈顶指针
    delete p;           //释放原栈顶的空间
    return OK;
}

int GetTop(LinkStack S)     //取栈顶元素
{
    if(S!=0) return S->data;
}

int main()
{
    S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值