Skip to content

Instantly share code, notes, and snippets.

@jwenjian
Created April 24, 2020 05:39
Show Gist options
  • Save jwenjian/230661d93dab4654f10334b583f409c9 to your computer and use it in GitHub Desktop.
Save jwenjian/230661d93dab4654f10334b583f409c9 to your computer and use it in GitHub Desktop.
Stack data structure to implement browser backward and forward
public class BrowserNavigateDemo {
static Stack<String> backStack = new Stack<>();
static Stack<String> forwardStack = new Stack<>();
public static void main(String[] args) {
browse("a");
browse("b");
browse("c");
System.out.println(back());
System.out.println(back());
browse("d");
System.out.println(back());
System.out.println(forward());
System.out.println(forward());
System.out.println(forward());
System.out.println(forward());
}
private static String back() {
if (backStack.empty()) {
return null;
}
forwardStack.push(backStack.pop());
if (backStack.empty()) {
return null;
}
return backStack.peek();
}
private static String forward() {
if (forwardStack.empty()) {
return null;
}
backStack.push(forwardStack.peek());
return forwardStack.pop();
}
private static void browse(String a) {
if (!forwardStack.empty()) {
forwardStack.clear();
}
backStack.push(a);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment