在C ++中以反向方式打印不可变链接列表

假设我们有一个不可变的链表,我们必须借助以下接口反向打印每个节点的所有值:

  • ImmutableListNode-这是一个不可变链表的接口,我们被赋予列表的头部。

我们必须使用以下功能来访问链表-

  • ImmutableListNode.printValue()-这将打印当前节点的值。

  • ImmutableListNode.getNext()-这将返回下一个节点。

因此,如果列表类似于:[0,-4,-1,3,-5],则输出将为[-5,3,-1,-4,0]

为了解决这个问题,我们将遵循以下步骤-

  • 为ImmutableListNode类型的节点定义一个堆栈st

  • 当head不为null时

    • 将头插入st

    • 头:=头下

  • 当st不为空时

    • 打印堆栈顶部节点的值

    • 从堆栈中删除节点

范例(C ++)

让我们看下面的实现以更好地理解-

class Solution {
public:
   void printLinkedListInReverse(ImmutableListNode* head) {
      stack <ImmutableListNode*> st;
      while(head){
         st.push(head);
         head = head->getNext();
      }
      while(!st.empty()){
         st.top()->printValue();
         st.pop();
      }
   }
};

输入值

[0,-4,-1,3,-5]

输出结果

[-5,3,-1,-4,0]