12.2总结(纵使结局不如意,放弃实属下下签。)

本文讲述了作者在菜鸟杯刷题中遇到链栈难题的经历,通过廖诗雨的指导,理解了栈的本质并成功解决了一个题目,揭示了栈操作的关键是栈顶操作和栈的后进先出特性。

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

刷题数三,

菜鸟杯补题2;

启航栈1;

终于知道这两天为什么这么痛苦了

我一度难受到窒息因为我看的是链栈我看了两天硬是对这些题目无从下手,因为他吧指针 结构体 链表 栈一起结合起来使用 我去搜各种博客自学 每个人的写法都不一样 一会跟我解释这个是这个意思那个是那个是那个意思我完全看不懂真的人都傻了 我一度躲在被窝里抽泣思考着我这么折磨自己的意义是什么,直到廖诗雨跟我说这些题目我们的水平只能用堆栈才好做我才豁然开朗,

所谓栈就是一个被阉割了的数组,他的数据只能从栈顶进入和弹出所以栈顶是关键,今天终于是做出了一个题目 交了三个只对了一个 ,不过已经能写出来了是一种进步了,看下面这个题目我的思维,我的伪代码标注着对栈的理解

#include<stdio.h>
int main()
{
    while(1)
  {
    int i;
    int top=0;
    int b[100],a[100];
    int n;
    scanf("%d",&n);
    if(n==0)
    {
        break;
    }
    for(i=0;i<n;i++)
    {
        scanf("%d",&b[i]);//先输入出栈顺序
    }
    int z=0;
    for(i=1;i<=n;i++)
    {
        a[++top]=i;//这是入栈顺序 top代表每个值的下标
        if(a[top]==b[z])//当出栈的数等于当前栈顶的数时就出栈。
        {
          top--;//一个数出栈后栈顶要减一代表栈的容量少了一个已经出去了,
          z++;//开始判断下一个出栈数
          while(a[top]==b[z]&&top)//如果出栈后作为新栈顶的数等于出栈数并且栈不是空栈就让他出栈。
          {
              top--;//栈容量减一
              z++;//开始判断下一个出栈数
          }
        }
    }
    if(top==0)//如果是一个合法出栈序列的话栈内所有的元素可以全部出去即栈容量为0,即top=0;
    {
        printf("Yes\n");
    }
    else
    {
        printf("No\n");//给出的样例能出栈的元素只有四和五,此时栈容量为三,所以这不是一个合法的出栈序列
    }
  }
  return 0;
}
虽然是在廖神仙的帮助下写出来的,但是自己写出思维也小有了一点成就感,希望自己还能挺过这一轮吧,加油!

纵使结局不如意,放弃实属下下签。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值