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

如何反转双链接列表?

夏侯玄天
2023-03-14

我正在尝试反转一个链表,我为此编写了代码。但是,当我在反转后打印列表时,输出有点不完整。

public void reverseDoubly() {
    Node temp = null;
    Node current = head;
    if(current == null) System.out.println("Cannot reverse an empty list!");
    while(current!=null) {
        temp = current.previous;
        current.previous = current.next;
        current.next = temp;
        current = current.previous;
    }
    if(temp!=null) { 
        head = temp.previous;
    }
}





public class Main {

public static void main(String[] args) {
    Doubly d1 = new Doubly();
    d1.insertFirst(80);
    d1.insertLast(90);
    d1.insertLast(100);
    d1.insertLast(120);
    d1.insertAtPos(3, 110);
    d1.reverseDoubly();
    d1.print();
}}

产量:120 110 100

共有1个答案

龚奇逸
2023-03-14

我有了一个想法,找到双链接列表的头和尾,然后像普通的单链接列表一样反转。

 类似资料:
  • 我目前无法获得双链接列表的反向函数来正确处理作业,我已经阅读了其他线程并在谷歌上搜索,但通常不同的是,我的问题以常量传递,它返回一个“dlist”。教授提供了一个“代码测试仪”,它说我的代码在执行“反向(反向(dlist c))”时,并不等于它本身就是“c”。[反转两次并不等于它本身]。 dlist类是: 这是反向函数: 每个数据列表节点都有一个指向前一个节点的指针和一个指向下一个节点的指针。dl

  • 我试图打印一个双链接列表,从tail元素开始,以first元素结束。我下面的代码就是这样做的,但出于某种原因,我也返回了被删除的项目。当我从头到尾打印列表时,它不会这样做。Idk,如果是toString导致了这个或dequed方法。我把两者都包括在内。

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

  • 我已经得到了实现双向链表的框架。我被PushFront()方法难住了。方法应该将提供的元素添加到链表的前面,并且应该将地址返回到新的头节点。我对如何访问列表的当前头部感到困惑,以便我可以将其分配给pNext指针。到目前为止,PushTop()方法看起来是这样的: 元素类构造函数: 数据类: 主要: 我的理解是,您通常会在调用PushFron()时提供头的地址,但是因为我没有提供,我不确定如何访问它

  • 我有麻烦删除双向链表中的节点,程序崩溃,我不能解决这个问题。你能帮我吗?这是创建新节点,查看它们并删除它们的完整代码。 我认为这个问题与Node del的scanf()有关,但我不确定。当我只是通过或

  • 我真的很难修复我的代码。我已经创建了一个双链接列表,我正试图反向遍历它。 有什么想法吗? 这是我的代码:Node。爪哇: 下面是第二个类“DNode.java”: 最后,这里是双链接列表。java:(重写另一个类“链表”中的“添加”和“删除”方法) 公共类双链接列表扩展了链接列表{ 我可以向前打印列表,但向后打印时会遇到无限循环。有什么想法吗? 谢谢