Java程序:删除单链表中所有偶数节点


在本文中,我们将学习如何从单链表中删除所有偶数节点。Java程序演示了如何创建和管理单链表,包括添加节点、删除偶数值节点和打印链表。您将看到如何插入节点、删除偶数值节点以及显示剩余节点。

单链表由节点组成,每个节点有两个部分:一部分存储数据,另一部分保存下一个节点的地址。这种设置只允许单向遍历,因为每个节点都通过单个连接链接到下一个节点。


问题陈述

编写一个Java程序,从单链表中删除所有偶数节点。

输入

Original List:
1 2 3 4 5 6

输出

Original List:
1 2 3 4 5 6
List after deleting even nodes:
1 3 5

从单链表中删除所有偶数节点的步骤

以下是从单链表中删除所有偶数节点的步骤:

  • 首先,我们将创建链表,我们将初始化一个空链表
  • 添加具有整数值(1, 2, 3, 4, 5, 6)的节点到列表的末尾。
  • 删除偶数节点,我们将删除前导偶数,我们检查并从列表的开头删除偶数节点。
  • 通过遍历剩余列表并删除具有偶数值的节点来删除内部偶数。
  • 打印删除后列表中剩余节点的值。

Java程序:删除单链表中所有偶数节点

这是一个从单链表中删除所有偶数节点的Java程序:

public class LinkedList {
    // Node class
    static class Node {
        int data;
        Node next;

        Node(int data) {
            this.data = data;
            this.next = null;
        }
    }

    Node head;

    // Function to insert a node at the end of the list
    public void insert(int data) {
        Node newNode = new Node(data);
        if (head == null) {
            head = newNode;
        } else {
            Node temp = head;
            while (temp.next != null) {
                temp = temp.next;
            }
            temp.next = newNode;
        }
    }

    // Function to delete all even nodes
    public void deleteEvenNodes() {
        if (head == null) return;

        // Removing even nodes at the beginning
        while (head != null && head.data % 2 == 0) {
            head = head.next;
        }

        // Remove even nodes that are not at the head
        Node current = head;
        while (current != null && current.next != null) {
            if (current.next.data % 2 == 0) {
                current.next = current.next.next;
            } else {
                current = current.next;
            }
        }
    }

    // Function to print the linked list
    public void printList() {
        Node temp = head;
        while (temp != null) {
            System.out.print(temp.data + " ");
            temp = temp.next;
        }
        System.out.println();
    }

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

        System.out.println("Original List:");
        list.printList();

        list.deleteEvenNodes();

        System.out.println("List after deleting even nodes:");
        list.printList();
    }
}

输出

Original List:
1 2 3 4 5 6 
List after deleting even nodes:
1 3 5 

代码解释

LinkedList类定义了一个链表,其中包含插入节点、删除偶数值节点和打印列表的方法。Node类表示列表中的每个节点,包含整数数据和对下一个节点的引用。insert()方法将新节点添加到列表的末尾。deleteEvenNodes()方法首先删除开头的偶数节点,然后迭代列表以删除任何剩余的偶数节点。最后,printList()方法输出列表中节点的值。main方法通过创建列表、插入值、删除偶数和打印结果来演示这些操作。

更新于:2024年9月18日

浏览量:108

开启你的职业生涯

完成课程获得认证

开始学习
广告