写点什么

【牛客刷题 - 算法】1- 算法入门 - 数据结构 - 栈

作者:清风莫追
  • 2022 年 10 月 01 日
    湖南
  • 本文字数:885 字

    阅读完需:约 3 分钟

前言

🔥 本文作为刷题笔记,将持续更新,有问题欢迎指出。🔥 希望能和大家一起加油,一起进步!


🌍 另外,给推荐一款神器:《牛客网》🌍 无论是面试,还是刷题学习,都非常好用。调试在线编程题时,对应的正确输出都是可以查看的。




@[toc]

1. 题目描述

描述请你实现一个栈。操作:push x:将 加入栈,保证 为 int 型整数。pop:输出栈顶,并让栈顶出栈 top:输出栈顶,栈顶不出栈


输入描述:第一行为一个正整数 ,代表操作次数。接下来的 ,每行为一个字符串,代表一个操作。保证操作是题目描述中三种中的一种。


输出描述:如果操作为 push,则不输出任何东西。如果为另外两种,若栈为空,则输出 "error“否则按对应操作输出。


示例 1


输入:6push 1poptoppush 2push 3pop

输出:1error3

2. 算法描述

  • 本题旨在自己实现一个简单的数据结构——栈,包含入栈、读取栈顶、出栈操作。

  • 我这里将栈顶指针设置为:指向栈顶元素的下一个。但这不是必要的,也可以尝试直接指向栈顶元素,但栈空时栈顶对应的下标应为

3. 代码实现

代码:


#include<stdio.h>int a[100001] = {};        //栈空间int main() {    int top = 0;            //栈顶指针,指向顶层元素的下一个    char s[5] = {} ;        //存放操作名    int n;    //操作次数    scanf("%d", &n);    int i;    //迭代操作次数    int x;    //被操作数据    for(i = 0; i < n; i++){    //每次循环完成一次操作        scanf("%s", &s);        if(strcmp(s, "push") == 0){            scanf("%d", &x);            a[top++] = x;        }        else if(strcmp(s, "pop") == 0){            if(top == 0)                 printf("error\n");            else {                printf("%d\n", a[--top]);            }        }        else if(strcmp(s, "top") == 0){            if(top == 0)                printf("error\n");            else                printf("%d\n", a[top-1]);        }    }}
复制代码

Accepted:


结束语:

今天的分享就到这里啦,快来加入刷题大军叭!👉点击开始刷题学习👈




感谢阅读


发布于: 刚刚阅读数: 5
用户头像

清风莫追

关注

还未添加个人签名 2022.08.09 加入

编程一学生

评论

发布
暂无评论
【牛客刷题-算法】1-算法入门-数据结构-栈_栈_清风莫追_InfoQ写作社区