当前位置: 首页 > 知识库问答 >
问题:

逆转单链表?

芮雪风
2023-03-14

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

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:类Node{//Public引用到下一个节点的公共Node下一个;

    // Private data field
    Object data;

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

    public Object GetData()
    {
        return data;
    }
}

这是主要功能:类测试{public static void main(String args[]){//创建一个单链接列表LinkedList LinkedList=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(); 
    } 
}

共有1个答案

商弘义
2023-03-14

这里有一个简单的解决方案:

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;
    }
}
 类似资料:
  • class Node(object): def __init__(self, data=None, next=None): self.data = data self.next = next link = Node(1, Node(2, Node(3, Node(4, Node(5, Node(6, Node(7, Node(8, Node(9))))))))) def r

  • 本文向大家介绍如何反转单链表相关面试题,主要包含被问及如何反转单链表时的应答技巧和注意事项,需要的朋友参考一下 考察点:链表    

  • 本文向大家介绍逆转交替合并两个链表的解析与实现,包括了逆转交替合并两个链表的解析与实现的使用技巧和注意事项,需要的朋友参考一下 逆转交替合并两个链表,即从一个链表的尾指针指向另一个链表的尾指针,依次逆转交替进行合并。下面就通过实例来详细的介绍该逆转交替合并两个链表的思路与实现代码。 一、问题描述 链表A和B A: 1->2->3->4 B: a->b->c->d 请逆转交替合并两个链表,示例结果如

  • 问题内容: 必须是O(n)并且是就地(空间复杂度为1)。下面的代码可以工作,但是有没有更简单或更完善的方法? 问题答案: 编辑以删除每次迭代的额外比较:

  • 问题内容: 反转此ArrayList的最简单方法是什么? 问题答案: 示例(参考):

  • 本文向大家介绍在C ++中将单链表转换为XOR链表,包括了在C ++中将单链表转换为XOR链表的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将讨论将单链表转换为XOR链表的程序。 为此,我们将提供一个单链表。我们的任务是获取该列表的元素,并将其转换为XOR链接列表。 示例 输出结果