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->