链栈

本文介绍了一种使用C++实现的链式栈数据结构,并详细展示了如何通过代码初始化栈、判断栈是否为空、进行压栈、弹栈及获取栈顶元素等基本操作。

#include<iostream.h>
typedef struct stacknode{
    int data;
    struct stacknode *next;
}StackNode;
typedef struct{
    StackNode *top;  //栈顶指针
}LinkStack;
void InitStack(LinkStack *&S){
   
 /*if(!S)
    {
        S=new LinkStack;
    }*/
    S=new LinkStack;
 S->top=NULL;
}

int StackEmpty(LinkStack *&S){
   return S->top==NULL;
}
void Push(LinkStack *&S,int e){//将元素e插入链栈头部
     StackNode *p;
  p=new StackNode;
        p->data=e;
        p->next=S->top;//将新结点*p插入链栈头部
        S->top=p;
}
int Pop(LinkStack *&S){
   int e;
   StackNode *p=S->top;//保存栈顶指针
   if(StackEmpty(S)) return 0;  //下溢
   e=p->data;  //保存栈顶结点数据
   S->top=p->next;  //将栈顶结点从链上摘下
   delete(p);
   return e;
}
int StackTop(LinkStack *&S){//取栈顶元素
   if(StackEmpty(S)) return 0;
   return S->top->data;
}
void print(LinkStack *&S){
 StackNode *p=S->top;
 while(p){
        cout<<p->data<<' ';
        p=p->next;
        }
   cout<<endl;
}
void main()
{
 int e=10;
 LinkStack *S;
 InitStack(S);
 for(int i=0;i<5;i++)
 {
  cin>>e;
     Push(S,e);
 }

 print(S);
 Pop(S);
 cout<<StackTop(S);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值