自己的代码
#include<stdio.h>
#include <stdlib.h>
#define StackSize 1000
typedef struct{
int data[StackSize];
// 用于指向栈顶元素
int top;
}SeqStack,*Stack;
void Push(Stack Ptr,int item)
{
Ptr->data[++(Ptr->top)] = item;
}
int Pop(Stack Ptr)
{
if(Ptr->top == -1)
{
printf("栈空");
return 0;
}
else
{
return Ptr->data[(Ptr->top)--];
}
}
int main()
{
int n,i,input,count=0,tag=1,out;
Stack S = (Stack)malloc(sizeof(SeqStack));
scanf("%d",&n);
S->top = -1;
for(i=0;i<n;i++)
{
if(S->top > n)
{
break;
}
if(tag == 1)
{
Push(S,++count);
}
scanf("%d",&input);
while(S->data[S->top] != input)
{
if(S->top > n)
{
break;
}
tag =1;
Push(S,++count);
}
if(S->data[S->top] == input)
{
out = Pop(S);
tag = 0;
continue;
}
}
if(S->top == -1)
{
printf("Yes");
}else
printf("No");
}
#include<stdio.h>
int train1[1000], train2[1000];
int main()
{
int i, n, p=0, top = 0;
scanf("%d",&n);
for (i = 0; i < n; i++)
{
scanf("%d",&train2[i]);
train1[top++] = i+1;
while (train2[p] == train1[top-1])
{
p++;
top--;
if (top == 0){
break;
}
}
}
if (top == 0)
printf("Yes\n");
else
printf("No\n");
return 0;
}
明天再理理思路,太开心了,画会儿