| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1088 人关注过本帖
标题:杭电 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
快速回复:杭电 POJ 1022题,火车入站出站顺序
数据加载中...
 
   



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

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