7-3 Pop Sequence (25 分)

本文探讨了如何解决数据结构问题7-3 Pop Sequence,初始尝试使用比较大小的方法无效,后参考柳神博客理解并实现新算法,但仍然无法通过所有测试点。算法思路涉及栈操作,通过维护一个temp变量跟踪最大值,根据数组值与temp的关系决定入栈或出栈。尽管尝试改进,仍有测试点未能通过。

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

7-3 Pop Sequence (25 分)

刚开始受严蔚敏数据结构的启发,想用比较大小的方法来判断是不是出栈序列。但是发现最后一个测试点就是卡这个算法。
然后看了柳神的博客,自己根据理解重新写了算法,但是第二个测试点还是过不去,下面是我的想法。
步骤:循环判断数组中的每一个数,初始化temp=1 ,用temp来判断当前数组的最大值。如果数组当前值小于temp,就出栈,若大于等于temp就入栈,直到temp等于最大值。如果超过栈的容量标记flag=0并且break。最后根据flag判断YES或NO。
但是上面的步骤不能通过第二个测试点。
于是参考了柳神的程序,得到了下面的程序:

#include <stdio.h>
#include <stdlib.h>
typedef struct node Stack;
struct node{
   
    //栈的定义
    int Data;
    Stack *Next;
};
Stack *CreateNode(){
   
   
    Stack *p;
    p = (Stack*)malloc(sizeof(struct node));
    p->Data = 0;
    p->Next = NULL;
    return p;
}
void Push(Stack *p,int item){
   
   
    Stack *ptr = CreateNode();
    ptr->Data = item;
    ptr->Next = p->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值