HTMLify

LeetCode - Design Browser History - Go
Views: 5 | Author: abh
// @leet start

type BrowserHistoryNode struct {
	Url string
	Back *BrowserHistoryNode
	Forward *BrowserHistoryNode
}

type BrowserHistory struct {
    CurrentPage *BrowserHistoryNode
}


func Constructor(homepage string) BrowserHistory {
    var bs BrowserHistory
	var home_page BrowserHistoryNode
	home_page.Url = homepage
	bs.CurrentPage = &home_page
	return bs
}


func (this *BrowserHistory) Visit(url string)  {
	var page BrowserHistoryNode
	page.Url = url
	this.CurrentPage.Forward = &page
	page.Back = this.CurrentPage
	this.CurrentPage = &page
}


func (this *BrowserHistory) Back(steps int) string {
	for range steps {
		if this.CurrentPage.Back == nil {
			break
		}
		this.CurrentPage = this.CurrentPage.Back
	}
	return this.CurrentPage.Url
}


func (this *BrowserHistory) Forward(steps int) string {
	for range steps {
		if this.CurrentPage.Forward == nil {
			break
		}
		this.CurrentPage = this.CurrentPage.Forward
	}
	return this.CurrentPage.Url
}


/**
 * Your BrowserHistory object will be instantiated and called as such:
 * obj := Constructor(homepage);
 * obj.Visit(url);
 * param_2 := obj.Back(steps);
 * param_3 := obj.Forward(steps);
 */
// @leet end

Comments