链表栈(Linked List Stack)

title

链表栈(Linked List Stack)是使用链表实现的栈结构。链表是一种常用的数据结构,它由节点(Node)组成,每个节点包含一个数据元素和一个指向下一个节点的指针。

在链表栈中,栈顶元素对应于链表的头节点。每次入栈操作都是在链表的头部插入一个新的节点,而每次出栈操作都是删除链表的头节点。

链表栈相比于数组栈,具有动态性和灵活性。因为链表栈的空间是动态分配的,可以随时进行扩容或缩容;而数组栈的空间是固定的,需要预先确定大小。

以下是使用Java语言实现链表栈的示例代码:

public class ListNode {
    int val;
    ListNode next;

    public ListNode(int val) {
        this.val = val;
    }
}

public class LinkedListStack {
    private ListNode top;

    public LinkedListStack() {
        this.top = null;
    }

    public boolean isEmpty() {
        return top == null;
    }

    public void push(int val) {
        ListNode node = new ListNode(val);
        node.next = top;
        top = node;
    }

    public int pop() {
        if (isEmpty()) {
            throw new EmptyStackException();
        }
        int val = top.val;
        top = top.next;
        return val;
    }

    public int peek() {
        if (isEmpty()) {
            throw new EmptyStackException();
        }
        return top.val;
    }
}

在上述代码中,我们定义了一个 ListNode 类表示链表节点,包含一个整数值 val 和一个指向下一个节点的指针 next。然后定义了 LinkedListStack 类,其中包含了 isEmpty、push、pop 和 peek 四个方法。其中,isEmpty 方法用于判断链表栈是否为空,push 方法用于入栈操作,在链表头部插入新的节点,pop 方法用于出栈操作,删除链表头部的节点,并返回其值。peek 方法用于返回链表栈的栈顶元素的值,而不删除该元素。注意,在 pop 和 peek 方法中,我们需要先判断链表栈是否为空,如果为空,则抛出 EmptyStackException 异常。

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:37:00

results matching ""

    No results matching ""