JS数据结构-队/栈/链表

95 阅读1分钟

    <div id="screen" style="border: 1px solid black; width: 200px; height: 200px;"></div>
    <div class="actions">
        <button id="createNumber">取号</button>
        <button id="callNumber">叫号</button>
    </div>
    <div>
        当前号码<span id="newNumber"></span>
    </div>
    <div>
        当前队列<span id="queue"></span>
    </div>
    <script>
        const divScreen = document.querySelector("#screen");
        const btnCreateNumber = document.querySelector("#createNumber");
        const btnCallNumber = document.querySelector("#callNumber");
        const spanNewNumber = document.querySelector("#newNumber");
        const spanQueue = document.querySelector("#queue");

        let n = 0;
        let queue = [];

        btnCreateNumber.onclick = () => {
            n += 1;
            queue.push.call(queue, n);
            spanNewNumber.innerText = n;
            spanQueue.innerText = JSON.stringify(queue);
        };

        btnCallNumber.onclick = () => {
            if (queue.length === 0) {
                return;
            }
            const m = queue.shift.call(queue);
            divScreen.innerText = `请${m}号就餐`;
            spanQueue.innerText = JSON.stringify(queue);
        };
    </script>

    function f1() {
        let a = 1;
        return a + f2();
    }
    function f2() {
        let b = 2;
        return b + f3();
    }
    function f3() {
        let c = 3;
        return c
    }
    console.log(f1());

链表

    const createList = value => {
        return createNode(value);

    const appendList = (List, value) => {
        const node = createNode(value);
        let x = list;
        while (x.next) {
            x = x.next;
        }
        x.next = node;
        return node;

    const removeFromList = (list, node) => {
        let x = list;
        let p = node;
        while (x !== node && x !== null) {
            p = x;
            x = x.next;
        }
        if (x === null) {
            return false;
        } else if (x === p) {
            p = x.next;
            return p;
        } else {
            p.next = x.next;
            return list;
        }

    const createNode = value => {
        return {
            data: value,
            next: null
        };

    const travelList = (list, fn) => {
        let x = list;
        while (x !== null) {
            fn(x);
            x = x.next;
        }

    const list = createList(10);
    const node2 = appendList(list, 20);
    const node3 = appendList(list, 30);
    const node4 = appendList(list, 40);
    travelList(list, node => {
        console.log(node.data);
    });
    removeFromList(list, node2);
    console.log(list);