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

yizhihongxing

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日

相关文章

  • 【技术博客】使用iview的tree组件写一棵文件树

    【技术博客】使用iview的tree组件写一棵文件树 随着前端技术不断的发展,越来越多的Web应用开始大量使用React、Angular、Vue等主流的前端框架。iview是一个采用Vue.js开发的UI组件库,提供了丰富的UI组件,对于前端开发来说非常有用。其中的tree组件可以轻松地实现一棵文件树的展示。本篇技术博客将介绍如何使用iview的tree组件…

    其他 2023年3月28日
    00
  • ThinkPHP5分页paginate代码实例解析

    ThinkPHP5分页paginate代码实例解析 1. 什么是ThinkPHP5分页paginate 在使用ThinkPHP5开发Web应用时,我们通常需要对数据库查询的结果进行分页展示,以便更好地展示大量数据并提供更好的用户体验。ThinkPHP5提供了一个便捷的分页查询方法paginate,可以简化分页操作的实现。 2. 使用paginate方法进行分…

    other 2023年6月28日
    00
  • 提示dns服务错误怎么办 dns错误问题多种解决方法

    提示DNS服务错误怎么办:DNS错误问题多种解决方法 DNS(Domain Name System)是一个网络服务,负责将域名解析成IP地址。当我们在使用互联网时,常常会出现提示DNS服务错误的情况,这时我们需要根据具体的情况来采取不同的解决方法。本文将针对常见的DNS错误问题,介绍多种解决方法。 检查网络连接状态 首先,我们需要检查自己的网络连接状态。这可…

    other 2023年6月27日
    00
  • php递归实现无限分类的方法

    PHP递归实现无限分类的方法 在实现一个无限分类的功能时,我们需要用到递归的方法。本文将详细讲解如何用PHP来实现无限分类的功能。 数据库表结构 首先,我们需要在数据库中建立符合我们需要的数据表结构。这是一个常见的无限分类数据表结构: CREATE TABLE `categories` ( `id` int(11) NOT NULL AUTO_INCREME…

    other 2023年6月27日
    00
  • Android自定义View实现打字机效果

    下面我来详细讲解“Android自定义View实现打字机效果”的完整攻略。 1. 简介 打字机效果是一种常见的UI效果,用于展示文字逐个逐个出现的效果。在Android中,我们可以通过自定义View来实现打字机效果。 2. 实现步骤 2.1. 继承TextView创建自定义View 首先,我们需要继承TextView来创建一个自定义View,它可以在绘制文字…

    other 2023年6月27日
    00
  • centos7.0安装

    CentOS 7.0 安装教程 CentOS是一个从Red Hat Enterprise Linux(RHEL)编译而来的开源操作系统,具有更长的支持周期、更大的软件仓库和更好的稳定性。本篇文章将为大家提供CentOS 7.0的安装教程。 下载CentOS 7.0镜像 首先,我们需要从官网下载CentOS 7.0的镜像文件。可以从如下链接下载最新的CentO…

    其他 2023年3月28日
    00
  • sql server 常用的几个数据类型

    当我们在使用SQL Server数据库时,数据类型是很重要的概念,因为SQL Server需要知道每个列的数据类型,以便正确地存储和处理数据。下面是SQL Server常用的几个数据类型的详细讲解: 1. 整数数据类型 在SQL Server中,整数数据类型可以存储整数值,包括小整数(tinyint)、短整数(smallint)、整数(int)、长整数(bi…

    other 2023年6月27日
    00
  • css实现垂直居中6种方法

    以下是详细讲解“CSS实现垂直居中6种方法”的完整攻略,过程中包含两个示例说明: CSS实现垂直居中6种方法 在Web开发中,垂直居中是一个常的需求。本攻略将介绍CSS实现垂直居中的6种方法,包括基本概念、使用方法和两个示例说明。 基本概念 在CSS中,垂直居中是指将一个元在垂直方向上居中对齐。实现垂直居中的方法有很多种,包括使用flex布局、使用table…

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