假设我们有一个不可变的链表,我们必须借助以下接口反向打印每个节点的所有值:
ImmutableListNode-这是一个不可变链表的接口,我们被赋予列表的头部。
我们必须使用以下功能来访问链表-
ImmutableListNode.printValue()-这将打印当前节点的值。
ImmutableListNode.getNext()-这将返回下一个节点。
因此,如果列表类似于:[0,-4,-1,3,-5],则输出将为[-5,3,-1,-4,0]
为了解决这个问题,我们将遵循以下步骤-
为ImmutableListNode类型的节点定义一个堆栈st
当head不为null时
将头插入st
头:=头下
当st不为空时
打印堆栈顶部节点的值
从堆栈中删除节点
让我们看下面的实现以更好地理解-
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]