Java基于链表实现栈的方法详解

Java基于链表实现栈的方法详解

一、链表

链表是一种常见的数据结构,可以通过指针将一组不连续的内存块连接起来,形成一个链式结构。链表中的每个节点包含两部分信息,一个是数据域用于存储数据,一个是指针域用于指向下一个节点的地址。通过头节点可以找到链表的第一个节点,通过节点的指针可以找到链表的其他节点。

二、栈

栈是一种常见的数据结构,具有先进后出的特点,即后进入的数据先被访问。栈通常包含如下操作:

  • push:将元素入栈;
  • pop:将栈顶元素出栈;
  • peek:获取栈顶元素值,但不出栈。

三、基于链表实现栈

基于链表实现栈需要定义一个节点类,包含两个成员变量,一个是存储数据的变量,另一个是指向下一个节点的指针变量。同时需要定义一个栈类,包含一个头节点指针变量,用于指向栈顶元素。

下面是Java基于链表实现栈的示例代码:

public class Node {
    public int data;
    public Node next;

    public Node(int data) {
        this.data = data;
    }
}

public class Stack {
    private Node head;

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

    public void push(int data) {
        Node node = new Node(data);
        node.next = head;
        head = node;
    }

    public int pop() {
        if (head == null) {
            throw new RuntimeException("Stack is empty");
        }
        int data = head.data;
        head = head.next;
        return data;
    }

    public int peek() {
        if (head == null) {
            throw new RuntimeException("Stack is empty");
        }
        return head.data;
    }
}

在上述示例代码中,节点类Node包含两个成员变量data和next,其中data用于存储节点的值,next用于指向下一个节点的地址。栈类Stack包含一个指针变量head,用于指向栈顶元素,同时包含三个方法:

  • isEmpty:判断栈是否为空;
  • push:将元素入栈;
  • pop:将栈顶元素出栈;
  • peek:获取栈顶元素值,但不出栈。

四、示例说明

示例一

public static void main(String[] args) {
    Stack stack = new Stack();
    stack.push(1);
    stack.push(2);
    stack.push(3);
    System.out.println(stack.pop()); //输出3
    System.out.println(stack.pop()); //输出2
    System.out.println(stack.peek()); //输出1
    System.out.println(stack.pop()); //输出1
}

上述示例代码中,首先创建一个空栈stack,然后依次将元素1、2、3入栈,接着依次进行出栈和获取栈顶元素操作,输出的结果为3、2、1、1,符合栈的先进后出特性。

示例二

public static void main(String[] args) {
    Stack stack = new Stack();
    System.out.println(stack.isEmpty()); //输出true
    stack.push(1);
    stack.push(2);
    System.out.println(stack.isEmpty()); //输出false
    stack.pop();
    stack.pop();
    System.out.println(stack.isEmpty()); //输出true
}

上述示例代码中,首先创建一个空栈stack,通过调用isEmpty方法判断栈是否为空,输出true。然后依次将元素1、2入栈,再次调用isEmpty方法判断栈是否为空,输出false。接着进行两次出栈操作,再次调用isEmpty方法判断栈是否为空,输出true,符合栈的先进后出特性和isEmpty方法的逻辑。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java基于链表实现栈的方法详解 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Access2010默认数字字段怎么设置成小数?

    想要将Access2010默认数字字段设置成小数,可以按照以下步骤进行操作: 打开Access 2010数据库,选择要设置小数的表格,进入表格设计模式。 在表格设计模式中,找到要设置为小数的数字字段,双击该字段,进入字段属性窗口。 在字段属性窗口中,找到“数据类型”项,选择“十进制数”或“货币”数据类型(这两种数据类型会自动设置小数位数),并根据需要设置小数…

    other 2023年6月25日
    00
  • CSS网页布局的核心内容:CSS盒模型

    CSS网页布局的核心内容: CSS盒模型攻略 CSS盒模型是网页布局中的核心概念之一。它描述了在网页中的每个元素都被看作是一个矩形的盒子,这个盒子由内容区域、内边距、边框和外边距组成。理解CSS盒模型对于实现灵活的网页布局至关重要。 盒模型的组成部分 CSS盒模型由以下四个部分组成: 内容区域(Content):盒子中用于显示文本、图像或其他内容的区域。 内…

    other 2023年9月6日
    00
  • python怎么将word段落转换成字符串

    Python怎么将Word段落转换成字符串 在Python中,我们有各种各样的库来读取和操作Word文档。其中一个流行的库是python-docx,它允许我们读取和写入Word文档。但是,在某些情况下,我们可能需要将Word文档中的段落转换为字符串以进行其他操作。本文将介绍如何使用python-docx库将Word段落转换为字符串。 安装python-doc…

    其他 2023年3月28日
    00
  • vue loadmore 组件滑动加载更多源码解析

    以下是“vue loadmore 组件滑动加载更多源码解析”的完整攻略。 1. 前言 在现代 Web 开发中,无限滚动加载更多已经成为了非常普遍的功能需求。Vue 是一款非常流行的前端框架,它提供了丰富的组件机制,使得开发者能够非常方便地实现无限滚动加载更多功能。 本篇攻略主要介绍一个基于 Vue 的 Loadmore 组件,该组件可以在滑动页面时自动触发加…

    other 2023年6月25日
    00
  • 批处理入门手册之批处理常用DOS命令篇(attrib、del、copy、xcopy)

    当我们学习使用批处理时,了解批处理常用的DOS命令是非常必要的。本篇文章将会详细介绍attrib、del、copy和xcopy这四个DOS命令的用法,同时也给出了一些实际的示例。 attrib命令 attrib命令用于显示或修改文件的属性,包括文件的只读、系统、隐藏和存档等属性。以下是常用的attrib命令选项: /S:对指定目录及其子目录中的文件进行操作 …

    other 2023年6月26日
    00
  • 百科powerdesigner15

    百科powerdesigner15 PowerDesigner15是什么? PowerDesigner15是一款流行的数据建模软件,它能够帮助用户进行数据结构和流程建模,同时也是企业级架构师和数据库开发人员的首选工具之一。PowerDesigner15支持多种数据建模标准和语言,例如UML,BPMN2.0,数据字典等等。它还支持多种数据库和应用程序的创建和维…

    其他 2023年3月28日
    00
  • C++超详细讲解字符串类

    C++超详细讲解字符串类 什么是字符串类 字符串类是一个用于处理字符串的类。在 C++ 中,字符串类有很多种实现方式,如使用 char 数组或 string 类等。在处理字符串时,不仅要考虑字符串的长度,还要注意字符串的内存管理和优化等问题。 使用 char 数组实现字符串类 在 C++ 中,我们可以使用 char 数组实现一个字符串类。以下是一个简单的示例…

    other 2023年6月20日
    00
  • js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】

    这里提供一个基于JavaScript实现的页面加载等待效果,其核心是利用了浏览器window对象的load事件和document对象的DOMContentLoaded事件。 首先,在HTML文件中加入CSS,用来定义loading提示效果的样式: .loading { width: 100%; height: 100%; display: flex; jus…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部