链栈的简单实现(C语言)

本文介绍了如何使用C语言实现链栈的基本操作,包括入栈、创建栈、出栈、读取栈顶元素和输出栈的完整代码。通过复习单链表的知识,详细讲解了链栈的定义和初始化过程,并提供了运行展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


链栈的操作和单链表差不多,入栈操作就相当于单链表的结点前插,出栈的操作就相当于结点前删。

单链表复习
链接: 单链表的简单实现.

基本操作

入栈
// 入栈(结点头插)
bool Push(LiStack S, ElemType e){
   
    LinkNode *p = (LinkNode*)malloc(sizeof(LinkNode));
    if(S->next == NULL){
     // 判断栈空
        // 先创建第一个结点
        p->data = e;       
        p->next = NULL;     // 后继指向空
        S->next = p;
    }else{
     // 后续结点都是在头结点和第一个结点之间插入
        p->next = S->next;  // p指向头指针原后继
        p->data = e;        // 存入数据
        S->next = p;        // 头指针后继指向p
    }
    return true;
} 

创建栈
// 创建栈
bool CreateStack(LiStack S){
   
    ElemType e;
    scanf("%d", &e);    // 读入数据   
    while(e != 9999){
      // 输入9999停止  
        Push(S, e);         // 调用入栈函数进行入栈
        scanf("%d", &e);    // 读入数据
    }
    return true;
}
出栈
// 出栈
bool Pop(LiStack S, ElemType *e){
   
    if(S == NULL || S->next == NULL) return false;
    LinkNode *p = S->next;
    S->next = p->next;  // 指向下一个结点
    free(p);
    return true;
}

读取栈顶元素
// 读取栈顶元素
bool GetTop(LiStack S, ElemType 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值