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

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日

相关文章

  • 手机重启和关机再开机区别是什么 手机卡顿时关机好还是重启好

    手机重启和关机再开机区别是什么? 手机重启是什么? 当我们遇到手机出现问题,比如应用闪退、卡顿、操作失灵等情况时,我们通常会先尝试重启手机。重启手机的操作是关闭手机后再重新启动手机,类似于我们在电脑上的重启操作。在重新启动时,手机会重新加载系统,这既可以帮助清除掉一些系统内部的缓存,还能重新分配电力资源等,使手机得以快速运行。 手机关机再开机是什么? 手机关…

    other 2023年6月26日
    00
  • Android使用CardView作为RecyclerView的Item并实现拖拽和左滑删除

    Android使用CardView作为RecyclerView的Item并实现拖拽和左滑删除攻略 在Android开发中,使用CardView作为RecyclerView的Item并实现拖拽和左滑删除功能是一种常见的需求。下面是一个完整的攻略,包含了实现该功能的详细步骤和两个示例说明。 步骤一:添加依赖 首先,确保你的项目中已经添加了CardView和Rec…

    other 2023年9月6日
    00
  • Java中堆和栈的区别详解

    Java中堆和栈的区别详解 在Java中,堆(Heap)和栈(Stack)是两个重要的内存区域,它们在内存管理和数据存储方面有着不同的特点和用途。下面将详细讲解堆和栈的区别,并提供两个示例说明。 堆(Heap) 堆是Java中用于动态分配内存的区域,用于存储对象和数组。以下是堆的特点: 堆是在程序运行时动态分配的,大小可以根据需要进行调整。 堆中的对象可以被…

    other 2023年8月2日
    00
  • unitydots简明教程

    下面是关于“Unity DOTS简明教程”的完整攻略: 1. Unity DOTS简介 Unity DOTS(Data-Oriented Technology Stack)是Unity引擎的一种新编程模式,它使用数据导向的方式来写游戏逻辑,以提高游戏的性能和可扩展性。Unity DOTS包括三个主要的技术:ECS(Entity System)、C# Job …

    other 2023年5月7日
    00
  • 新技巧:Linux系统常见6种紧急情况处理方法

    新技巧:Linux系统常见6种紧急情况处理方法 介绍 在Linux系统中,有时候会发生紧急情况,例如系统崩溃、硬盘故障等等,这些问题可能会导致数据的丢失和系统瘫痪。因此,我们需要掌握Linux系统常见的六种紧急情况处理方法,来应对这些突发事件。 六种紧急情况处理方法 1. 恢复GRUB引导 GRUB是Linux系统的引导程序,它能够加载操作系统并引导启动。如…

    other 2023年6月27日
    00
  • dns服务器地址大全 全国主要省份电信/网通/铁通dns地址汇总

    DNS服务器地址大全 全国主要省份电信/网通/铁通DNS地址汇总攻略 介绍 DNS(Domain Name System)是互联网中用于将域名转换为IP地址的系统。在访问网站或发送电子邮件时,计算机需要通过DNS服务器来解析域名。本攻略将提供全国主要省份电信、网通和铁通的DNS服务器地址,以便用户在需要时进行设置。 DNS服务器地址列表 电信DNS服务器地址…

    other 2023年7月30日
    00
  • Golang执行cmd命令行的方法

    下面是关于Golang执行cmd命令行的方法的完整攻略: 1. 使用os包 通过os包可以在Golang中执行cmd命令行。 package main import ( "fmt" "os/exec" ) func main() { // 创建cmd命令行的执行对象 cmd := exec.Command("…

    other 2023年6月27日
    00
  • js调用打印机打印整体或部分

    当然,我可以为您提供有关“JS调用打印机打印整体或部分”的完整攻略,以下是详细说明: 什么是JS调用打印机打印整体或部分? JS调用打印机打印整体或部分是指使用JavaScript代码控制打印机打印网页内容的过程。通过JS用打印机打印整体或部分,可以实现在网页上选择需要打印的内容,或者直接打印整个网页。 JS调用打印机打印整体或部分的步骤 以下是JS用打印机…

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