java - 反转单链表?

标签 java reverse singly-linked-list

这是我为单链表提供的代码,但是我正在努力完成反向功能。这是代码和我对反向函数的尝试。我不断收到 2 个错误,内容为“未声明的变量:节点”和“不兼容的类型:节点无法转换为链接列表”。

class LinkedList
{
    Node head;
    Node current;
    Node previous;

    public Object Get()
    {
        return current != null ? current.GetData() : null;
    }

    public void Next()
    {
        if (current != null)
        {
            previous = current;
            current = current.next;
        }
    }

    public void Head()
    {
        previous = null;
        current = head;
    }

    public void Insert(Object data)
    {
        Node node = new Node(data);
        node.next = current;

        if (current == head)
            head = node;
        else
            previous.next = node;

        current = node;
    }

    public void Remove()
    {
        if (current == null)
            throw new RuntimeException("Invalid position to remove");

        if (current == head)
            head = current.next;
        else
            previous.next = current.next;

        current = current.next;
    }

    public void Print()
    {
        for (Head(); Get() != null; Next())
            System.out.println(Get());
    }

    public LinkedList Reverse()
    {
        Node previous = null;  
        Node current = node;  
        Node forward;  

        while (current != null) 
        {  
            forward = current.next;  
            current.next = previous;  
            previous = current;  
            current = forward;  
        }  
    return previous;  
    }  

}

还有一个 Node 类: 类节点 { //公共(public)引用下一个节点 接下来是公共(public)节点;

    // Private data field
    Object data;

    Node(Object data)
    {
        this.data = data;
    }

    public Object GetData()
    {
        return data;
    }
}

这是主要功能: 类(class)测试 { 公共(public)静态无效主(字符串参数[]) { //创建一个单向链表 LinkedList linked_list = new LinkedList();

        // adding node into singly linked list 
        linked_list.Insert(Integer.valueOf(10));
        linked_list.Next();
        linked_list.Insert(Integer.valueOf(11));
        linked_list.Next();
        linked_list.Insert(Integer.valueOf(12));
        
        // printing a singly linked 
        linked_list.Print();
        
        // reversing the singly linked list 
        linked_list.Reverse(); 
        
        // printing the singly linked list again 
        linked_list.Print(); 
    } 
}

最佳答案

这是一个简单的解决方案:

public class ListReverser {
    public static Node<Integer> reverse(Node head) {
        Node current = head;
        while(current.getNext() != null) {
            Node next =  current.getNext();
            current.setNext(next.getNext());
            next.setNext(head);
            head = next;
        }
        return head;
    }
}

关于java - 反转单链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70691959/

相关文章:

Java - 反向读取行的输出

python - 我可以只编码一个 "1-dim array"吗?

Python 哈希表和链表。如何从 HashTable 类打印列表

c - c中的单链表错误

java - Maven项目的变更

java - 无法在数据库中保存日期(月/日/年)

java - 字符串声明 -> Null、空字符串、一些值 - 字符串声明

java - 展平集合

java - 如何编写代码来测试另一个类的代码?

c++ - C++中的内置哈希表