题解 | #【模板】栈#

【模板】栈

https://www.nowcoder.com/practice/104ce248c2f04cfb986b92d0548cccbf

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

typedef struct LNode {
    int data;
    struct LNode* next;
} LNode, *LinkStack ;

// 初始化一个链栈
bool Init(LinkStack& S) {
    // 创建一个头结点
    S = (LNode*)malloc(sizeof(LNode));
    // 分配空间失败
    if (S == NULL) return false;
    // 让头结点指向NULL
    S->next = NULL;
    return true;
}

// 入栈
bool Push(LinkStack& S, int x) {
    // S是非法栈
    if (S == NULL) return false;
    // 创建一个数据节点
    LNode* n = (LNode*)malloc(sizeof(LNode));
    n->data = x;
    // 数据结点指后段链表
    n->next = S->next;
    // 头结点指向数据结点
    S->next = n;
    return true;
}

// 出栈
bool Pop(LinkStack& S, int& x) {
    // 判断栈空
    if (S->next == NULL) return false;
    // 临时指针指向要释放的结点
    LNode* p = S->next;
    // 头结点指向新的第一数据结点
    S->next = p->next;
    // 存数据,销毁结点
    x = p->data;
    free(p);
    return true;
}

// 查栈顶
bool GetTop(LinkStack& S, int& x) {
    // 判断是否有栈顶元素
    if (S->next == NULL)return false;
    x = S->next->data;
    return true;
}
int main() {
    LinkStack S;
    Init(S);
    std::string a, b;
    int n;
    cin >> n;

    for (int i = 0; i < n; i++) {
        string op;
        cin >> op;
        if (op == "push") {
            int  x;
            cin >> x;
            if (!Push(S, x)) {
                cout << "error" << endl;
            };
        }
        if (op == "pop") {
            int x;
            if (!Pop(S, x)) {
                cout << "error" << endl;
            } else
                cout << x << endl;


        }
        int y;
        if (op == "top") {
            if (!GetTop(S, y)) {
                cout << "error" << endl;

            } else
                cout << y << endl;
        }
    }
}

全部评论

相关推荐

杨柳哥:这不是普通人,那这个钱的是天才
点赞 评论 收藏
分享
头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
最近和朋友聊天,她说了句让我震惊的话:"我发现我连周末点外卖都开始'最优解'了,一定要赶在高峰期前下单,不然就觉得自己亏了。"这不就是典型的"班味入侵"吗?工作思维已经渗透到生活的方方面面。
小型域名服务器:啊?我一直都这样啊?我还以为是我爱贪小便宜呢?每次去实验室都得接一杯免费的开水回去,出门都得规划一下最短路径,在宿舍就吃南边的食堂,在实验室就吃北边的食堂,快递只有顺路的时候才取。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务