• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 21, comments - 2, trackbacks - 0, articles - 0

            ZOJ 1061 Web Navigation_數據結構_棧

            Posted on 2011-09-05 22:47 acpeng 閱讀(567) 評論(0)  編輯 收藏 引用 所屬分類: ACM程序
            http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=61
            數據結構,用C寫的棧,不用STL確實復雜多了,WA了幾次~
            Standard web browsers contain features to move backward and forward among the pages recently visited. One way to implement these features is to use two stacks to keep track of the pages that can be reached by moving backward and forward. In this problem, you are asked to implement this.

            The following commands need to be supported:

            BACK: Push the current page on the top of the forward stack. Pop the page from the top of the backward stack, making it the new current page. If the backward stack is empty, the command is ignored.

            FORWARD: Push the current page on the top of the backward stack. Pop the page from the top of the forward stack, making it the new current page. If the forward stack is empty, the command is ignored.

            VISIT <url>: Push the current page on the top of the backward stack, and make the URL specified the new current page. The forward stack is emptied.

            QUIT: Quit the browser.

            Assume that the browser initially loads the web page at the URL http://www.acm.org/


            This problem contains multiple test cases!

            The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.

            The output format consists of N output blocks. There is a blank line between output blocks.


            Input

            Input is a sequence of commands. The command keywords BACK, FORWARD, VISIT, and QUIT are all in uppercase. URLs have no whitespace and have at most 70 characters. You may assume that no problem instance requires more than 100 elements in each stack at any time. The end of input is indicated by the QUIT command.

            Output

            For each command other than QUIT, print the URL of the current page after the command is executed if the command is not ignored. Otherwise, print "Ignored". The output for each command should be printed on its own line. No output is produced for the QUIT command.

            Sample Input

            1

            VISIT http://acm.ashland.edu/
            VISIT http://acm.baylor.edu/acmicpc/
            BACK
            BACK
            BACK
            FORWARD
            VISIT http://www.ibm.com/
            BACK
            BACK
            FORWARD
            FORWARD
            FORWARD
            QUIT

            Sample Output

            http://acm.ashland.edu/
            http://acm.baylor.edu/acmicpc/
            http://acm.ashland.edu/
            http://www.acm.org/
            Ignored
            http://acm.ashland.edu/
            http://www.ibm.com/
            http://acm.ashland.edu/
            http://www.acm.org/
            http://acm.ashland.edu/
            http://www.ibm.com/
            Ignored

            AC代碼:

            #include<stdio.h>
            #include
            <string.h>
            #include
            <malloc.h>
            #define StackSize 105
            typedef 
            struct
            {
                
            char elemt[StackSize][73];
                
            int top;
            }
            Stack;
            void InitStack(Stack *S)
            {
                  S
            ->top=-1;
            }

            int ElemtNum(Stack *S)
            {
                
            return (S->top)+1;
            }

            int IsFull(Stack *S)
            {
                
            return(S->top==StackSize-1?1:0);
            }

            int PushStack(Stack *S,char *x)
            {
                
            if(IsFull(S))  
                    
            return 0;
                S
            ->top++;
                memset(S
            ->elemt[S->top],'\0',sizeof(S->elemt[S->top]));
                strcpy(S
            ->elemt[S->top],x);
                
            return 1;
            }

            int PopStack(Stack *S,char *x)
            {  
                
            if(ElemtNum(S)==0)
                    
            return 0;
                memset(x,
            0,sizeof(x));
                  strcpy(x,S
            ->elemt[S->top]);
                memset(S
            ->elemt[S->top],0,sizeof(S->elemt[S->top]));
                S
            ->top--;
                  
            return 1;
            }

            int GetTopElemt(Stack *S,char *x)
            {
                
            if(ElemtNum(S)==0)
                    
            return 0;
                  memset(x,
            0,sizeof(x));
                  strcpy(x,S
            ->elemt[S->top]);
                  
            return 1;
            }

            int main()
            {
                Stack 
            *sBack,*sForward;
                sBack
            =(Stack *)malloc(sizeof(Stack));
                sForward
            =(Stack *)malloc(sizeof(Stack));
                
            int T;char str[73]="\0",comd[8]="\0",tmp[73]="\0";
                scanf(
            "%d",&T);
                
            while(T--)
                
            {
                    InitStack(sBack); InitStack(sForward);
                    PushStack(sBack,
            "http://www.acm.org/");
                    
            while(1)
                    
            {
                        memset(comd,
            0,sizeof(comd));
                        scanf(
            "%s",comd);
                        
            if(strcmp(comd,"BACK")==0)
                        
            {
                            
            if(ElemtNum(sBack)==1)
                            
            {
                                printf(
            "Ignored\n");
                                
            continue;
                            }

                            PopStack(sBack,tmp);
                            PushStack(sForward,tmp);
                            
            if(GetTopElemt(sBack,tmp)==1)
                                printf(
            "%s\n",tmp);
                        }

                        
            else if(strcmp(comd,"FORWARD")==0)
                        
            {
                            
            if(ElemtNum(sForward)==0)
                            
            {
                                printf(
            "Ignored\n");
                                
            continue;
                            }

                            PopStack(sForward,tmp);
                            PushStack(sBack,tmp);
                            
            if(GetTopElemt(sBack,tmp)==1)
                                printf(
            "%s\n",tmp);
                        }

                        
            else if(strcmp(comd,"VISIT")==0)
                        
            {
                            memset(str,
            0,sizeof(str));
                            scanf(
            "%s",str);
                            printf(
            "%s\n",str);
                            PushStack(sBack,str);
                            InitStack(sForward);
                        }

                        
            else if(strcmp(comd,"QUIT")==0)
                            
            break;
                    }

                    
            if(T>0) printf("\n");
                }

                free(sBack);free(sForward);
                
            return 0;
            }


            精品无码久久久久久午夜| 久久久青草青青亚洲国产免观| 久久精品免费观看| 久久精品国产精品亚洲精品| 999久久久国产精品| 香蕉99久久国产综合精品宅男自| 囯产极品美女高潮无套久久久| 久久99国产综合精品| 久久综合九色综合欧美就去吻| 久久久无码精品亚洲日韩按摩| 久久se精品一区精品二区| 久久综合视频网| 99久久无色码中文字幕| 亚洲精品tv久久久久久久久久| 伊人久久久AV老熟妇色| 久久精品无码一区二区三区免费 | 97久久婷婷五月综合色d啪蜜芽| 久久成人国产精品| 亚洲欧美精品一区久久中文字幕| 国产精品久久久久影院色| 久久久亚洲欧洲日产国码是AV | 欧洲性大片xxxxx久久久| 99麻豆久久久国产精品免费| 伊人久久大香线蕉亚洲五月天| 伊人久久大香线蕉精品| 97精品伊人久久久大香线蕉| 99久久777色| 久久青青草原精品国产| 国产精品久久久久久久久久影院| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 91精品免费久久久久久久久| 亚洲综合伊人久久大杳蕉| 亚洲欧洲久久久精品| 久久精品国产一区二区三区| 一本久久久久久久| 国产免费福利体检区久久| 国产精品成人久久久久久久| 国产精品视频久久| 品成人欧美大片久久国产欧美| 久久久青草青青亚洲国产免观| 久久亚洲精品视频|