生活随笔
收集整理的這篇文章主要介紹了
poj1028 模拟浏览器后退和前进(栈)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
? 題目是讓模擬實現(xiàn)一下瀏覽器的后退和前進功能,題目中也有提示,用兩個棧就可以了,比較簡單。
[cpp]?view plaincopy
#include?<stdio.h>?? #include?<stdlib.h>?? #include?<string.h>?? typedef?struct?{?? ????int?top;?? ????char*?s[100];?? }?Stack;?? ?? ? ? ?? Stack*?create_stack(){?? ????Stack*?stack=(Stack*)(malloc(sizeof(Stack)));?? ????stack->top=-1;?? ????memset(stack->s,0,sizeof(stack->s));?? ????return?stack;?? }?? ?? void?push(Stack*?stack,char*?str){?? ????stack->s[++stack->top]=str;?? }?? ?? char*?pop(Stack*?stack){?? ????int?top=stack->top;?? ????if(top==-1){?? ????????return?NULL;?? ????}?? ????stack->top--;?? ????return?stack->s[top];?? }?? ?? int?isEmpty(Stack*?stack){?? ????return?stack->top==-1;?? }?? ?? int?main(void){?? ????Stack*?forward=create_stack();?? ????Stack*?backward=create_stack();?? ?????? ????char*?home_page="http://www.acm.org/";?? ????char*?current_page=home_page;?? ????char?command[8];?? ????while(1){?? ????????scanf("%s",command);?? ????????if(command[0]=='Q'){?? ????????????break;?? ????????}else?if(command[0]=='V'){?? ????????????push(backward,current_page);?? ?????????????? ????????????char?*str=(char*)malloc(sizeof(char)*71);?? ????????????scanf("%s",str);?? ????????????current_page=str;?? ?????????????? ????????????forward->top=-1;?? ????????????printf("%s\n",str);?? ????????}else?if(command[0]=='B'){?? ????????????if(isEmpty(backward)){?? ????????????????printf("Ignored\n");?? ????????????}else{?? ????????????????push(forward,current_page);?? ????????????????current_page=pop(backward);?? ????????????????printf("%s\n",current_page);?? ????????????}?? ????????}else{?? ????????????if(isEmpty(forward)){?? ????????????????printf("Ignored\n");?? ????????????}else{?? ????????????????push(backward,current_page);?? ????????????????current_page=pop(forward);?? ????????????????printf("%s\n",current_page);?? ????????????}?? ????????}?? ????}?? ?????? ????int?i;?? ????for(i=0;i<100;i++){?? ????????char*?tmp=backward->s[i];?? ????????if(tmp&&tmp!=home_page){?? ????????????free(backward->s[i]);?? ????????}?? ????}?? ????free(forward);?? ????free(backward);?? ????return?0;?? } ?
總結
以上是生活随笔為你收集整理的poj1028 模拟浏览器后退和前进(栈)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。