标题:杭电 POJ 1022题,火车入站出站顺序
只看楼主
zhuchenxi
Rank: 1
等 级:新手上路
帖 子:61
专家分:6
注 册:2011-4-28
结帖率:100%
 问题点数:0 回复次数:2 
杭电 POJ 1022题,火车入站出站顺序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Stack_Size 100
#define Stack_Inc_Size 10
typedef struct{
    char *top,*base;
    int length;
}QStack;

int InitStack(QStack &Q)
{
    Q.base=(char *)malloc(Stack_Size*sizeof(char));
    if(!Q.base) return 0;
    Q.top=Q.base;
    Q.length=Stack_Size;
    return 1;
}

int Push(QStack &Q,char e)
{
    if(Q.top-Q.base>=Q.length){
        Q.base=(char *)realloc(Q.base,(Stack_Size+Stack_Inc_Size)*sizeof(char));
        if(!Q.base) return 0;
        Q.top=Q.base+Q.length;
        Q.length+=Stack_Inc_Size;
    }
    *Q.top++;
    *Q.top=e;
    return 1;
}

int Pop(QStack &Q,char &e)
{
    if(Q.top==Q.base) return 0;
    e=*Q.top;
    *Q.top--;
    return 1;
}

int GetTop(QStack &Q,char &e)
{
    if(Q.top==Q.base) return 0;
    e=*Q.top;
    return 1;
}

int StackEmpty(QStack &Q)
{
    if(Q.top==Q.base) return 1;
    return 0;
}

void ClearStack(QStack &Q)
{
    int i;
    for(i=0;i<Q.length;i++){
        *(Q.top-i)=0;
    }
}

int main()
{
    bool F;
    QStack Q;
    char str1[10],str2[10],e1,e2;
    int i,k,r,n,j;
    InitStack(Q);
    while(scanf("%d",&n)!=EOF){
        scanf("%s %s",str1,str2);
        F=true;
        for(i=0;i<n-1;i++){
            if(i==0){
                if(str2[i+1]<str2[i]&&str2[i+1]<str2[i+2]&&str2[i+2]<str2[i]) F=false;
            }
            else{
                if(str2[i]<str2[i-1]&&str2[i]<str2[i+1]&&str2[i-1]>str2[i+1]) F=false;
            }
        }
        if(F==false) printf("No.\n");
        else{
            if(!StackEmpty(Q)) ClearStack(Q);
            printf("Yes.\n");
            Push(Q,str1[0]);
            printf("in\n");
            k=1,r=0;
            j=2*n;
            while(1){
                GetTop(Q,e1);
                if(e1!=str2[r]){
                    Push(Q,str1[k]);
                    printf("in\n");
                    k++;
                }
                else Pop(Q,e2),printf("out\n"),r++;
                if(r==n&&k==n) break;
            }
        }
        printf("FINISH\n");
    }
    return 0;
}

这个代码交上去 老是RE,求大神 解答
搜索更多相关主题的帖子: include return 火车 
2011-10-19 23:24
zhuchenxi
Rank: 1
等 级:新手上路
帖 子:61
专家分:6
注 册:2011-4-28
得分:0 
好多天没人。。
2011-10-25 11:41
双强
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2011-11-5
得分:0 
很想读,但是拜托写上注释好不好!!!
2011-11-05 18:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-352966-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.742761 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved