数据结构与算法(五)栈(二) -链表栈实现-模拟浏览器前进后退功能

public class Stack {
    @Test
    public void test() {
//        LinkedStack linkedStack = new LinkedStack();
//        linkedStack.push("a");
//        linkedStack.push("b");
//        linkedStack.push("c");
//        linkedStack.show();
//        System.out.println("==============" + linkedStack.pop());
//        linkedStack.show();

        Browser browser = new Browser();
        browser.open("a");
        browser.open("b");
        browser.open("c");
        browser.forward();
        browser.backward();
        browser.backward();
        browser.forward();
        browser.open("d");
    }

    class Node {
        String value;
        Node next;

        Node(String value) {
            this.value = value;
        }
    }

    class LinkedStack {
        Node head;

        public void push(String value) {
            Node temp = new Node(value);
            if (head == null) {
                head = temp;
                return;
            }
            Node current = head;
            temp.next = current;
            head = temp;
        }

        public String pop() {
            if (head == null) {
                return null;
            }
            String value = head.value;
            head = head.next;
            return value;
        }

        public void clear() {
            head = null;
        }

        public void show() {
            Node current = head;
            while (current != null) {
                System.out.println("===============[" + current.value + "]");
                current = current.next;
            }
        }
    }

    class Browser {
        private LinkedStack stack1 = new LinkedStack();
        private LinkedStack stack2 = new LinkedStack();

        public void forward() {
            String value = stack2.pop();
            if (value == null) return;
            stack1.push(value);
            System.out.println("forward1============================");
            stack1.show();
            System.out.println("forward2============================");
            stack2.show();
        }

        public void backward() {
            String value = stack1.pop();
            if (value == null) return;
            stack2.push(value);
            System.out.println("backward1=============================");
            stack1.show();
            System.out.println("backward2=============================");
            stack2.show();
        }

        public void open(String target) {
            stack1.push(target);
            stack2.clear();
            System.out.println("open1===================================");
            stack1.show();
            System.out.println("open2===================================");
            stack2.show();

        }
    }

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值