链栈--用链式存储方式实现栈

#include<stdio.h> 
#include<stdlib.h>

typedef struct LinkNode{
    int data;           //数据域 
    struct LinkNode *next;           //指针域 
    
}LNode,*LiStack;               //栈类型定义 
 

int main(){
    LiStack InitLinkStack();
    bool InsertStack(LiStack &S,int e);
    LNode * SeclectStack(LiStack S,int e);
    int  deleteStack(LiStack &S,int &e);
    bool empty(LiStack S);
    
    LiStack S;
    S=InitLinkStack();
    int i;
    for(i=0;i<10;i++){
        
        InsertStack(S,i);
    } 
    LNode *q;
    q= SeclectStack(S,1);
    printf("栈顶元素为:%d\n",q->data);
    
    int w=0; 
    for(i=0;i<10;i++){
        w=deleteStack(S,w);
        printf("出栈元素为:%d\n",w);
    } 
    
    if(empty(S)){
        printf("这是一个空栈");
    }else{
        printf("这不是一个空栈");
    } 

    
    
    return 0; 
}

//带头结点
//创(初始化) 
LiStack InitLinkStack(){
    LiStack S;
    S=(LNode *)malloc(sizeof(LNode));
    
    
    S->next=NULL;
    
    return S;

//增(进栈) 
bool InsertStack(LiStack &S,int e){
    LNode *x;
    x=(LNode *)malloc(sizeof(LNode));
    if(x==NULL){
        return false;    //内存空间不足 
    } 
    x->data =e;
    x->next = S->next;
    S->next =x;
    
    return true; 
    
}
//查(获取栈顶元素)
 LNode * SeclectStack(LiStack S,int e){
     return S->next;
     
 }
//删(出栈)
int  deleteStack(LiStack &S,int &e){
    e = S->next->data;
    S->next =S->next->next; 
    
    
     return e;
     
 }
 //判断为空栈
 bool empty(LiStack S){
     if(S->next == NULL){
         return true; 
     }else{
         return false; 
     }
     
     
 }

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值