数据结构--栈--浏览器前进后退应用
生活随笔
收集整理的這篇文章主要介紹了
数据结构--栈--浏览器前进后退应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
瀏覽器前進后退:
當你依次瀏覽a,b,c,然后回到b,再瀏覽d,就只能查看a,b,d,了。
原理: 利用兩個棧A,B
題目:LeetCode 5430. 設計瀏覽器歷史記錄(雙棧)
browser.h頭文件
// // Created by mingm on 2019/3/31. // #ifndef STACK_BROWSER_H #define STACK_BROWSER_H#include "stack.cpp" class Browser { private:Stack<const char*> forward_stack, back_stack;void displayCurWeb(const char *ch){cout << "Current web is : " << ch << endl;} public:Browser(){}~Browser(){}void forward(){if(!back_stack.Empty()){forward_stack.Push(back_stack.GetTop()->data);back_stack.Pop();displayCurWeb(forward_stack.GetTop()->data);}else{cout << "can not forward, there is no more page!" << endl;displayCurWeb(forward_stack.GetTop()->data);}}void back(){if(forward_stack.GetLength()>1){back_stack.Push(forward_stack.GetTop()->data);forward_stack.Pop();displayCurWeb(forward_stack.GetTop()->data);}else{cout << "can not back, there is no more page! " << endl;displayCurWeb(forward_stack.GetTop()->data);}}void browseWeb(const char* ch){back_stack.Clear();forward_stack.Push(ch);displayCurWeb(forward_stack.GetTop()->data);} }; #endif //STACK_BROWSER_H測試程序 browser_stack_main.cpp
//瀏覽器前進后退功能,棧實現 // Created by mingm on 2019/3/31. // #include "browser.h" #include <iostream> using namespace std;int main() {Browser webBrowser;webBrowser.browseWeb("baidu.com");webBrowser.browseWeb("google.com");webBrowser.browseWeb("163.com");cout << "forward..." << endl;webBrowser.forward();cout << "back..." << endl;webBrowser.back();cout << "browse mi.com ..." << endl;webBrowser.browseWeb("mi.com");cout << "forward..." << endl;webBrowser.forward();cout << "back..." << endl;webBrowser.back();cout << "back..." << endl;webBrowser.back();cout << "back..." << endl;webBrowser.back();cout << "forward..." << endl;webBrowser.forward(); }valgrind測試結果
總結
以上是生活随笔為你收集整理的数据结构--栈--浏览器前进后退应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android查询所有照片,Androi
- 下一篇: 2017年html5行业报告,云适配发布