Java 反转带头结点的单链表并显示输出的实现过程

yizhihongxing

Java实现反转带头结点的单链表,并输出结果的过程主要包括以下步骤:

1. 创建带头结点的单链表

首先,我们需要创建一个带头结点的单链表,其中头结点不存储任何数据,只用于表示链表的头部。代码如下:

class ListNode {
    int val;
    ListNode next;

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

public class LinkedList {
    private ListNode head;

    public LinkedList() {
        head = new ListNode(0);
    }

    public void addNode(int val) {
        ListNode newNode = new ListNode(val);
        ListNode cur = head;
        while(cur.next != null) {
            cur = cur.next;
        }
        cur.next = newNode;
    }
}

2. 反转单链表

接下来,我们需要实现反转单链表的功能。反转单链表的基本思路是,从头结点开始,依次将每个节点的指针指向它的上一个结点,直到遍历到最后一个节点。

示例代码如下:

public void reverseList() {
    ListNode pre = null;
    ListNode cur = head.next;
    ListNode nxt = null;

    while(cur != null) {
        nxt = cur.next;
        cur.next = pre;
        pre = cur;
        cur = nxt;
    }
    head.next = pre;
}

3. 输出反转后的结果

最后,我们需要将反转后的结果输出。代码如下:

public void printList() {
    ListNode cur = head.next;
    while(cur != null) {
        System.out.print(cur.val + " ");
        cur = cur.next;
    }
    System.out.println();
}

4. 示例说明

下面给出两个示例,详细说明了如何使用上述代码实现反转带头结点的单链表,并输出结果。

示例1:

public static void main(String[] args) {
    LinkedList list = new LinkedList();
    list.addNode(1);
    list.addNode(2);
    list.addNode(3);
    list.addNode(4);
    list.addNode(5);

    System.out.println("反转前的结果:");
    list.printList();
    list.reverseList();
    System.out.println("反转后的结果:");
    list.printList();
}

输出结果为:

反转前的结果:
1 2 3 4 5 
反转后的结果:
5 4 3 2 1 

示例2:

public static void main(String[] args) {
    LinkedList list = new LinkedList();
    list.addNode(0);
    list.addNode(1);

    System.out.println("反转前的结果:");
    list.printList();
    list.reverseList();
    System.out.println("反转后的结果:");
    list.printList();
}

输出结果为:

反转前的结果:
1 2 
反转后的结果:
2 1 

以上就是Java实现反转带头结点的单链表,并输出结果的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 反转带头结点的单链表并显示输出的实现过程 - Python技术站

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

相关文章

  • 使用字符串函数输出整数化的PHP版本号

    要输出整数化的PHP版本号,可以使用字符串函数来处理版本号字符串。下面是一个完整的攻略: 获取PHP版本号字符串:首先,我们需要获取PHP版本号的字符串表示。可以使用phpversion()函数来获取当前PHP版本号的字符串。例如: $versionString = phpversion(); echo $versionString; // 输出:7.4.1…

    other 2023年8月3日
    00
  • 几个有用的unix命令快捷键整理

    几个有用的Unix命令快捷键整理 快捷键能够显著提高Unix用户的效率。本文将介绍几个最常用的Unix命令快捷键,帮助您节省时间和提高工作效率。 特殊字符快捷键 在Unix中,有一些特殊的字符能够用于在命令行中快速输入一些基本命令: Ctrl-C:停止当前的命令。 Ctrl-D:退出当前会话或关闭标准输入流。 Ctrl-Z:暂停当前任务并将其放在后台。 这些…

    other 2023年6月26日
    00
  • 关于opengl:在vmware(debianx64)中 glxgears的作用

    OpenGL是一种跨平台的图形库,它可以用于创建高性能的3D图形应用程序。在Linux系统中,可以使用glxgears命令来测试OpenGL的性能。glxgears是一个简单的OpenGL程序,它会显示一个旋转的齿轮,并且会在窗口标题栏上显示帧率。在VMware虚机中运行glxgears可以测试虚拟机的OpenGL性能。 以下是关于在VMware(Debia…

    other 2023年5月7日
    00
  • Java Swing组件布局管理器之FlowLayout(流式布局)入门教程

    “Java Swing组件布局管理器之FlowLayout(流式布局)入门教程”是一篇介绍Java Swing中FlowLayout(流式布局)布局管理器的文章。在这篇文章中,我们将详细讲解FlowLayout的使用方法,以及如何在Java Swing应用程序中使用它来创建自适应的用户界面。 FlowLayout的定义和原理 FlowLayout是Java …

    other 2023年6月26日
    00
  • pip安装yaml

    以下是安装yaml模块的完整攻略,包括两个示例说明。 步骤 以下是安装yaml模块的基本步骤: 确认已安装pip。 在终端中输入pip –version如果输出pip的版本信息,则说明pip已安装。如果未安装,可以参考pip官方文档进行安装。 安装yaml模块。 在终端中输入pip install pyyaml,等待安装完成。 验证安装。 在终端中输入py…

    other 2023年5月6日
    00
  • Go语言服务器开发之简易TCP客户端与服务端实现方法

    我来详细讲解一下“Go语言服务器开发之简易TCP客户端与服务端实现方法”的完整攻略。 简介 本攻略将会介绍如何使用Go语言实现简单的TCP客户端与TCP服务端,并且在两者之间成功地建立连接。TCP(Transmission Control Protocol)是一种基于连接的协议,是因特网基础设施的一部分,用于传输数据。 实现方法 TCP服务端 首先,我们需要…

    other 2023年6月27日
    00
  • Go语言七篇入门教程六网络编程

    在Go语言中,网络编程是很重要的一部分,可以帮助我们实现各种网络应用。在这篇教程中,我们将讲解Go语言的网络编程。本文会阐述Go语言网络编程的一些基本知识,如TCP、UDP协议、Socket编程等,可以让读者全面了解网络编程的原理和实现方法。 第一篇:基础知识和基本概念 我们首先需要了解网络编程中一些基本的概念和知识,例如套接字(Socket)、IP地址和端…

    other 2023年6月27日
    00
  • QT中出现“无法解析的外部符号”错误

    QT中出现“无法解析的外部符号”错误 在使用QT进行开发时,可能会遇到一些错误,其中”无法解析的外部符号”是比较常见的错误之一。这种错误通常会在编译或链接过程中出现,导致程序无法正常工作。在本文中,我们将深入探讨该错误的原因和解决方法。 原因 QT中的“无法解析的外部符号”错误通常是由于以下原因之一导致的: 忘记 include 头文件 当使用某个类或函数时…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部